Mercurial > hg > Papers > 2015 > parusu-prosym
changeset 31:b04f53aba6ec
Update
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 07 Jan 2016 19:39:55 +0900 |
parents | 57b34ffe2971 |
children | 0b99de43a192 |
files | presen/images/comparenormalandtree.pdf presen/images/comparenormalandtree.svg presen/images/vnc.pdf presen/images/vnc.svg presen/prosym.html presen/prosym.md |
diffstat | 6 files changed, 585 insertions(+), 278 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/images/comparenormalandtree.svg Thu Jan 07 19:39:55 2016 +0900 @@ -0,0 +1,275 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="492pt" height="252pt" viewBox="0 0 492 252" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 0.390625 0 L 0.390625 -8.609375 L 7.21875 -8.609375 L 7.21875 0 Z M 6.140625 -1.078125 L 6.140625 -7.53125 L 1.46875 -7.53125 L 1.46875 -1.078125 Z M 6.140625 -1.078125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 4.546875 -8.84375 C 5.628906 -8.84375 6.472656 -8.554688 7.078125 -7.984375 C 7.679688 -7.410156 8.015625 -6.757812 8.078125 -6.03125 L 6.9375 -6.03125 C 6.8125 -6.582031 6.554688 -7.019531 6.171875 -7.34375 C 5.785156 -7.664062 5.242188 -7.828125 4.546875 -7.828125 C 3.703125 -7.828125 3.019531 -7.53125 2.5 -6.9375 C 1.976562 -6.34375 1.71875 -5.429688 1.71875 -4.203125 C 1.71875 -3.191406 1.953125 -2.367188 2.421875 -1.734375 C 2.890625 -1.109375 3.59375 -0.796875 4.53125 -0.796875 C 5.382812 -0.796875 6.039062 -1.128906 6.5 -1.796875 C 6.726562 -2.140625 6.90625 -2.597656 7.03125 -3.171875 L 8.15625 -3.171875 C 8.0625 -2.265625 7.726562 -1.503906 7.15625 -0.890625 C 6.46875 -0.148438 5.546875 0.21875 4.390625 0.21875 C 3.390625 0.21875 2.550781 -0.0820312 1.875 -0.6875 C 0.976562 -1.488281 0.53125 -2.722656 0.53125 -4.390625 C 0.53125 -5.660156 0.863281 -6.703125 1.53125 -7.515625 C 2.257812 -8.398438 3.265625 -8.84375 4.546875 -8.84375 Z M 4.3125 -8.84375 Z M 4.3125 -8.84375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.671875 -2.78125 C 1.703125 -2.289062 1.816406 -1.894531 2.015625 -1.59375 C 2.410156 -1.019531 3.09375 -0.734375 4.0625 -0.734375 C 4.5 -0.734375 4.898438 -0.796875 5.265625 -0.921875 C 5.960938 -1.160156 6.3125 -1.59375 6.3125 -2.21875 C 6.3125 -2.6875 6.160156 -3.019531 5.859375 -3.21875 C 5.566406 -3.414062 5.101562 -3.585938 4.46875 -3.734375 L 3.3125 -4 C 2.539062 -4.164062 2 -4.351562 1.6875 -4.5625 C 1.144531 -4.925781 0.875 -5.460938 0.875 -6.171875 C 0.875 -6.953125 1.140625 -7.585938 1.671875 -8.078125 C 2.203125 -8.578125 2.957031 -8.828125 3.9375 -8.828125 C 4.84375 -8.828125 5.609375 -8.609375 6.234375 -8.171875 C 6.867188 -7.734375 7.1875 -7.035156 7.1875 -6.078125 L 6.09375 -6.078125 C 6.03125 -6.546875 5.90625 -6.898438 5.71875 -7.140625 C 5.363281 -7.585938 4.757812 -7.8125 3.90625 -7.8125 C 3.21875 -7.8125 2.722656 -7.664062 2.421875 -7.375 C 2.117188 -7.09375 1.96875 -6.757812 1.96875 -6.375 C 1.96875 -5.957031 2.144531 -5.648438 2.5 -5.453125 C 2.726562 -5.328125 3.25 -5.171875 4.0625 -4.984375 L 5.28125 -4.703125 C 5.851562 -4.566406 6.300781 -4.382812 6.625 -4.15625 C 7.164062 -3.757812 7.4375 -3.175781 7.4375 -2.40625 C 7.4375 -1.457031 7.085938 -0.773438 6.390625 -0.359375 C 5.703125 0.046875 4.898438 0.25 3.984375 0.25 C 2.910156 0.25 2.070312 -0.0195312 1.46875 -0.5625 C 0.863281 -1.113281 0.566406 -1.851562 0.578125 -2.78125 Z M 4.03125 -8.84375 Z M 4.03125 -8.84375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 1.03125 -8.609375 L 4.90625 -8.609375 C 5.664062 -8.609375 6.28125 -8.390625 6.75 -7.953125 C 7.21875 -7.523438 7.453125 -6.921875 7.453125 -6.140625 C 7.453125 -5.472656 7.242188 -4.890625 6.828125 -4.390625 C 6.410156 -3.890625 5.769531 -3.640625 4.90625 -3.640625 L 2.1875 -3.640625 L 2.1875 0 L 1.03125 0 Z M 6.28125 -6.140625 C 6.28125 -6.765625 6.046875 -7.191406 5.578125 -7.421875 C 5.316406 -7.546875 4.960938 -7.609375 4.515625 -7.609375 L 2.1875 -7.609375 L 2.1875 -4.625 L 4.515625 -4.625 C 5.035156 -4.625 5.457031 -4.734375 5.78125 -4.953125 C 6.113281 -5.179688 6.28125 -5.578125 6.28125 -6.140625 Z M 6.28125 -6.140625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 1 -10.453125 L 1 1.203125 L 10.984375 1.203125 L 10.984375 -10.578125 L 1 -10.578125 Z M 9.640625 -9.921875 L 6 -5.453125 L 2.5625 -9.703125 L 9.4375 -9.703125 Z M 10.3125 -0.125 L 6.625 -4.6875 L 10.3125 -9.234375 L 9.96875 -9.328125 L 9.96875 -0.03125 Z M 2.375 0.546875 L 6 -3.921875 L 9.4375 0.3125 L 2.5625 0.3125 Z M 2.015625 -0.03125 L 2.015625 -9.34375 L 1.6875 -9.25 L 5.375 -4.6875 L 1.6875 -0.125 Z M 2.015625 -0.03125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 0.390625 -2.78125 C 0.46875 -2.296875 0.515625 -2.0625 0.625 -1.78125 C 0.859375 -1.203125 1.234375 -0.640625 1.71875 -0.328125 C 2.296875 0.0625 3.359375 0.34375 4.34375 0.34375 C 5.625 0.34375 6.671875 0 7.3125 -0.609375 C 7.796875 -1.109375 8.09375 -1.890625 8.09375 -2.75 C 8.09375 -3.640625 7.75 -4.40625 7.0625 -4.90625 C 6.640625 -5.203125 5.96875 -5.46875 5.015625 -5.671875 C 3.6875 -5.96875 3.59375 -6 3.328125 -6.109375 C 2.765625 -6.34375 2.640625 -6.5625 2.640625 -7.0625 C 2.640625 -7.84375 3.21875 -8.25 4.265625 -8.25 C 4.921875 -8.25 5.34375 -8.078125 5.65625 -7.703125 C 5.859375 -7.46875 5.90625 -7.359375 6 -6.796875 L 7.984375 -7.03125 C 7.828125 -7.78125 7.640625 -8.25 7.34375 -8.640625 C 6.75 -9.4375 5.625 -9.890625 4.265625 -9.890625 C 2.203125 -9.890625 0.703125 -8.671875 0.703125 -7.015625 C 0.703125 -6.203125 1.0625 -5.453125 1.671875 -4.96875 C 2.09375 -4.625 2.6875 -4.40625 3.59375 -4.203125 C 5.25 -3.8125 5.203125 -3.84375 5.5625 -3.640625 C 5.9375 -3.4375 6.125 -3.125 6.125 -2.640625 C 6.125 -1.734375 5.5625 -1.328125 4.359375 -1.328125 C 3.578125 -1.328125 3.046875 -1.546875 2.703125 -2 C 2.484375 -2.28125 2.453125 -2.421875 2.390625 -3.109375 L 0.390625 -2.90625 Z M 0.390625 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 10.015625 0.015625 C 10.046875 -0.234375 10.046875 -0.234375 10.140625 -0.578125 C 10.171875 -0.6875 10.21875 -0.90625 10.3125 -1.234375 L 12.234375 -8.109375 C 12.421875 -8.8125 12.53125 -9.125 12.75 -9.671875 L 10.5 -9.671875 C 10.484375 -9.203125 10.421875 -8.71875 10.296875 -8.25 L 9.1875 -3.734375 C 9.15625 -3.625 9.0625 -3.15625 9.03125 -2.96875 C 8.953125 -2.546875 8.953125 -2.546875 8.890625 -2.265625 L 9.171875 -2.265625 C 8.96875 -3.171875 8.921875 -3.40625 8.828125 -3.71875 L 7.484375 -8.34375 C 7.359375 -8.78125 7.25 -9.25 7.203125 -9.671875 L 5.46875 -9.671875 C 5.421875 -9.21875 5.34375 -8.8125 5.203125 -8.3125 L 3.859375 -3.6875 C 3.765625 -3.34375 3.6875 -3.015625 3.53125 -2.265625 L 3.796875 -2.265625 C 3.734375 -2.6875 3.59375 -3.296875 3.515625 -3.671875 L 2.40625 -8.25 C 2.265625 -8.765625 2.203125 -9.125 2.171875 -9.671875 L -0.078125 -9.671875 C 0.140625 -9.1875 0.265625 -8.8125 0.46875 -8.109375 L 2.375 -1.21875 C 2.640625 -0.28125 2.640625 -0.28125 2.71875 0.140625 L 4.5625 0.140625 C 4.609375 -0.28125 4.703125 -0.65625 4.84375 -1.203125 L 6.125 -5.65625 C 6.234375 -6.046875 6.34375 -6.515625 6.484375 -7.203125 L 6.203125 -7.203125 C 6.3125 -6.59375 6.421875 -6.125 6.546875 -5.65625 L 7.84375 -1.203125 C 7.953125 -0.796875 8.078125 -0.28125 8.140625 0.140625 L 9.984375 0.140625 Z M 10.015625 0.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1 -10.453125 L 1 1.203125 L 10.984375 1.203125 L 10.984375 -10.578125 L 1 -10.578125 Z M 9.640625 -9.921875 L 6 -5.453125 L 2.5625 -9.703125 L 9.4375 -9.703125 Z M 10.3125 -0.125 L 6.625 -4.6875 L 10.3125 -9.234375 L 9.96875 -9.328125 L 9.96875 -0.03125 Z M 2.375 0.546875 L 6 -3.921875 L 9.4375 0.3125 L 2.5625 0.3125 Z M 2.015625 -0.03125 L 2.015625 -9.34375 L 1.6875 -9.25 L 5.375 -4.6875 L 1.6875 -0.125 Z M 2.015625 -0.03125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.390625 -2.78125 C 0.46875 -2.296875 0.515625 -2.0625 0.625 -1.78125 C 0.859375 -1.203125 1.234375 -0.640625 1.71875 -0.328125 C 2.296875 0.0625 3.359375 0.34375 4.34375 0.34375 C 5.625 0.34375 6.671875 0 7.3125 -0.609375 C 7.796875 -1.109375 8.09375 -1.890625 8.09375 -2.75 C 8.09375 -3.640625 7.75 -4.40625 7.0625 -4.90625 C 6.640625 -5.203125 5.96875 -5.46875 5.015625 -5.671875 C 3.6875 -5.96875 3.59375 -6 3.328125 -6.109375 C 2.765625 -6.34375 2.640625 -6.5625 2.640625 -7.0625 C 2.640625 -7.84375 3.21875 -8.25 4.265625 -8.25 C 4.921875 -8.25 5.34375 -8.078125 5.65625 -7.703125 C 5.859375 -7.46875 5.90625 -7.359375 6 -6.796875 L 7.984375 -7.03125 C 7.828125 -7.78125 7.640625 -8.25 7.34375 -8.640625 C 6.75 -9.4375 5.625 -9.890625 4.265625 -9.890625 C 2.203125 -9.890625 0.703125 -8.671875 0.703125 -7.015625 C 0.703125 -6.203125 1.0625 -5.453125 1.671875 -4.96875 C 2.09375 -4.625 2.6875 -4.40625 3.59375 -4.203125 C 5.25 -3.8125 5.203125 -3.84375 5.5625 -3.640625 C 5.9375 -3.4375 6.125 -3.125 6.125 -2.640625 C 6.125 -1.734375 5.5625 -1.328125 4.359375 -1.328125 C 3.578125 -1.328125 3.046875 -1.546875 2.703125 -2 C 2.484375 -2.28125 2.453125 -2.421875 2.390625 -3.109375 L 0.390625 -2.90625 Z M 0.390625 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 10.015625 0.015625 C 10.046875 -0.234375 10.046875 -0.234375 10.140625 -0.578125 C 10.171875 -0.6875 10.21875 -0.90625 10.3125 -1.234375 L 12.234375 -8.109375 C 12.421875 -8.8125 12.53125 -9.125 12.75 -9.671875 L 10.5 -9.671875 C 10.484375 -9.203125 10.421875 -8.71875 10.296875 -8.25 L 9.1875 -3.734375 C 9.15625 -3.625 9.0625 -3.15625 9.03125 -2.96875 C 8.953125 -2.546875 8.953125 -2.546875 8.890625 -2.265625 L 9.171875 -2.265625 C 8.96875 -3.171875 8.921875 -3.40625 8.828125 -3.71875 L 7.484375 -8.34375 C 7.359375 -8.78125 7.25 -9.25 7.203125 -9.671875 L 5.46875 -9.671875 C 5.421875 -9.21875 5.34375 -8.8125 5.203125 -8.3125 L 3.859375 -3.6875 C 3.765625 -3.34375 3.6875 -3.015625 3.53125 -2.265625 L 3.796875 -2.265625 C 3.734375 -2.6875 3.59375 -3.296875 3.515625 -3.671875 L 2.40625 -8.25 C 2.265625 -8.765625 2.203125 -9.125 2.171875 -9.671875 L -0.078125 -9.671875 C 0.140625 -9.1875 0.265625 -8.8125 0.46875 -8.109375 L 2.375 -1.21875 C 2.640625 -0.28125 2.640625 -0.28125 2.71875 0.140625 L 4.5625 0.140625 C 4.609375 -0.28125 4.703125 -0.65625 4.84375 -1.203125 L 6.125 -5.65625 C 6.234375 -6.046875 6.34375 -6.515625 6.484375 -7.203125 L 6.203125 -7.203125 C 6.3125 -6.59375 6.421875 -6.125 6.546875 -5.65625 L 7.84375 -1.203125 C 7.953125 -0.796875 8.078125 -0.28125 8.140625 0.140625 L 9.984375 0.140625 Z M 10.015625 0.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 0.59375 -6.875 L 0.59375 -4.984375 L 2.625 -4.984375 L 2.625 -7.015625 L 0.59375 -7.015625 Z M 0.59375 -1.734375 L 0.59375 0.140625 L 2.625 0.140625 L 2.625 -1.875 L 0.59375 -1.875 Z M 0.59375 -1.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 8.09375 0.015625 C 8.140625 -0.328125 8.203125 -0.546875 8.390625 -1.125 L 9.71875 -5.390625 C 10.03125 -6.390625 10.0625 -6.484375 10.265625 -7.015625 L 8.1875 -7.015625 C 8.140625 -6.484375 8.046875 -5.96875 7.90625 -5.453125 L 7.234375 -3.046875 C 7.21875 -2.96875 7.125 -2.578125 7.09375 -2.40625 C 7.0625 -2.25 7.0625 -2.25 7.03125 -2.140625 L 7.3125 -2.140625 C 7.28125 -2.25 7.265625 -2.265625 7.234375 -2.421875 C 7.15625 -2.671875 7.109375 -2.90625 7.0625 -3.015625 L 6.1875 -5.734375 C 6.078125 -6.078125 5.921875 -6.640625 5.859375 -7.015625 L 4.34375 -7.015625 C 4.28125 -6.640625 4.140625 -6.078125 4.015625 -5.734375 L 3.15625 -3.125 C 3.109375 -2.96875 2.90625 -2.265625 2.875 -2.140625 L 3.15625 -2.140625 C 3.0625 -2.609375 2.984375 -2.953125 2.9375 -3.109375 L 2.28125 -5.453125 C 2.140625 -5.921875 2.046875 -6.53125 2 -7.015625 L -0.078125 -7.015625 C 0.125 -6.4375 0.296875 -5.9375 0.46875 -5.390625 L 1.78125 -1.125 C 1.984375 -0.515625 2.03125 -0.34375 2.125 0.140625 L 3.75 0.140625 C 3.8125 -0.234375 3.953125 -0.71875 4.078125 -1.125 L 5 -3.9375 C 5.046875 -4.0625 5.1875 -4.546875 5.25 -4.765625 L 4.96875 -4.765625 C 5.09375 -4.265625 5.203125 -3.90625 5.203125 -3.921875 L 6.125 -1.125 C 6.265625 -0.65625 6.375 -0.28125 6.4375 0.140625 L 8.0625 0.140625 Z M 8.09375 0.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d="M 0.59375 -9.546875 L 0.59375 -7.890625 L 2.640625 -7.890625 L 2.640625 -9.671875 L 0.59375 -9.671875 Z M 0.59375 -6.875 C 0.671875 -6.390625 0.703125 -5.96875 0.703125 -5.3125 L 0.703125 -1.546875 C 0.703125 -0.953125 0.671875 -0.53125 0.59375 0.140625 L 2.640625 0.140625 C 2.5625 -0.484375 2.546875 -0.90625 2.546875 -1.5625 L 2.546875 -5.296875 C 2.546875 -6.03125 2.5625 -6.4375 2.65625 -7.015625 L 0.578125 -7.015625 Z M 0.59375 -6.875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 1.40625 -8.71875 C 1.453125 -8.296875 1.484375 -7.765625 1.484375 -7.25 L 1.484375 -7.015625 L 1.1875 -7.015625 C 0.6875 -7.015625 0.453125 -7.015625 -0.03125 -7.109375 L -0.03125 -5.375 C 0.5 -5.453125 0.734375 -5.46875 1.171875 -5.46875 L 1.484375 -5.46875 L 1.484375 -1.578125 C 1.484375 -0.3125 2.1875 0.3125 3.5625 0.3125 C 4.1875 0.3125 4.546875 0.25 5.203125 0.015625 L 4.9375 -1.546875 C 4.375 -1.234375 4.28125 -1.21875 3.96875 -1.21875 C 3.390625 -1.21875 3.3125 -1.296875 3.3125 -1.890625 L 3.3125 -5.46875 L 3.71875 -5.46875 C 4.265625 -5.46875 4.5 -5.453125 5.03125 -5.375 L 5.03125 -7.109375 C 4.515625 -7.015625 4.25 -7.015625 3.6875 -7.015625 L 3.3125 -7.015625 L 3.3125 -7.25 C 3.3125 -7.78125 3.34375 -8.296875 3.40625 -8.859375 L 1.390625 -8.859375 Z M 1.40625 -8.71875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 7.125 -4.921875 C 6.953125 -5.359375 6.828125 -5.65625 6.671875 -5.890625 C 6.09375 -6.734375 5.0625 -7.21875 3.890625 -7.21875 C 2.90625 -7.21875 1.953125 -6.875 1.375 -6.28125 C 0.703125 -5.609375 0.3125 -4.53125 0.3125 -3.40625 C 0.3125 -1.1875 1.828125 0.375 3.9375 0.375 C 5.078125 0.375 6.09375 -0.078125 6.671875 -0.875 C 6.890625 -1.15625 7.046875 -1.515625 7.25 -2.09375 L 5.484375 -2.453125 C 5.375 -1.984375 5.359375 -1.953125 5.25 -1.78125 C 4.9375 -1.359375 4.578125 -1.15625 3.96875 -1.15625 C 2.765625 -1.15625 2.140625 -1.9375 2.140625 -3.4375 C 2.140625 -4.9375 2.75 -5.71875 3.921875 -5.71875 C 4.453125 -5.71875 4.765625 -5.5625 5.046875 -5.203125 C 5.203125 -5.015625 5.25 -4.9375 5.453125 -4.421875 L 7.15625 -4.828125 Z M 7.125 -4.921875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 0.609375 -9.546875 C 0.671875 -9.0625 0.703125 -8.6875 0.703125 -7.96875 L 0.703125 -1.546875 C 0.703125 -0.859375 0.671875 -0.5 0.578125 0.140625 L 2.625 0.140625 C 2.53125 -0.5 2.515625 -0.953125 2.515625 -1.546875 L 2.515625 -3.96875 C 3.046875 -5.171875 3.609375 -5.609375 4.515625 -5.609375 C 4.84375 -5.609375 5.015625 -5.53125 5.234375 -5.296875 C 5.453125 -5.0625 5.546875 -4.765625 5.546875 -4.21875 L 5.546875 -1.546875 C 5.546875 -0.9375 5.515625 -0.53125 5.453125 0.140625 L 7.5 0.140625 C 7.40625 -0.4375 7.375 -0.890625 7.375 -1.546875 L 7.375 -4.578125 C 7.375 -6.125 6.375 -7.125 4.84375 -7.125 C 3.75 -7.125 2.984375 -6.75 2.25 -5.8125 L 2.484375 -5.71875 C 2.515625 -6.03125 2.515625 -6.078125 2.515625 -6.234375 L 2.515625 -7.953125 C 2.515625 -8.640625 2.53125 -9.078125 2.609375 -9.671875 L 0.59375 -9.671875 Z M 0.609375 -9.546875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 7.328125 -3.03125 C 7.3125 -3.3125 7.3125 -3.34375 7.3125 -3.375 C 7.265625 -4.1875 7.1875 -4.625 6.953125 -5.203125 C 6.484375 -6.390625 5.25 -7.21875 3.84375 -7.21875 C 1.78125 -7.21875 0.3125 -5.640625 0.3125 -3.421875 C 0.3125 -1.171875 1.796875 0.375 3.921875 0.375 C 4.9375 0.375 5.875 0.03125 6.484375 -0.59375 C 6.796875 -0.890625 6.984375 -1.21875 7.296875 -1.875 L 5.625 -2.40625 C 5.453125 -1.921875 5.40625 -1.890625 5.25 -1.71875 C 4.90625 -1.328125 4.515625 -1.15625 3.921875 -1.15625 C 3.3125 -1.15625 2.875 -1.359375 2.515625 -1.78125 C 2.25 -2.140625 2.171875 -2.375 2.125 -2.90625 L 7.34375 -2.90625 Z M 2.140625 -4.21875 C 2.328125 -5.234375 2.875 -5.71875 3.8125 -5.71875 C 4.375 -5.71875 4.6875 -5.609375 5 -5.28125 C 5.296875 -4.984375 5.40625 -4.75 5.46875 -4.359375 L 2.171875 -4.359375 Z M 2.140625 -4.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 5.765625 -7.015625 C 5.234375 -7.109375 4.9375 -7.140625 4.65625 -7.140625 C 3.578125 -7.140625 2.71875 -6.703125 2.296875 -5.84375 L 2.53125 -5.75 L 2.53125 -7.015625 L 0.59375 -7.015625 C 0.703125 -6.390625 0.703125 -6.046875 0.703125 -5.3125 L 0.703125 -1.546875 C 0.703125 -0.921875 0.6875 -0.578125 0.609375 0.140625 L 2.625 0.140625 C 2.5625 -0.546875 2.53125 -0.90625 2.53125 -1.546875 L 2.53125 -3.765625 C 2.609375 -4.34375 2.6875 -4.53125 2.984375 -4.875 C 3.328125 -5.265625 3.6875 -5.421875 4.28125 -5.421875 C 4.59375 -5.421875 4.84375 -5.375 5.4375 -5.203125 L 5.921875 -6.984375 Z M 5.765625 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 4.71875 0.015625 C 4.796875 -0.34375 4.84375 -0.4375 5.078125 -1.0625 L 6.921875 -5.609375 C 7.15625 -6.203125 7.265625 -6.4375 7.53125 -7.015625 L 5.390625 -7.015625 C 5.3125 -6.546875 5.25 -6.328125 5.0625 -5.765625 L 3.84375 -2.28125 C 3.75 -2.046875 3.65625 -1.734375 3.578125 -1.46875 L 3.859375 -1.46875 C 3.78125 -1.734375 3.671875 -2.09375 3.59375 -2.28125 L 2.375 -5.765625 C 2.21875 -6.203125 2.109375 -6.609375 2.046875 -7.015625 L -0.09375 -7.015625 C 0.203125 -6.375 0.390625 -5.921875 0.53125 -5.609375 L 2.359375 -1.0625 C 2.609375 -0.453125 2.65625 -0.3125 2.765625 0.140625 L 4.6875 0.140625 Z M 4.71875 0.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 7.15625 -3.203125 C 7.0625 -2.65625 7 -2.5 6.796875 -2.203125 C 6.40625 -1.625 5.796875 -1.34375 4.953125 -1.34375 C 3.28125 -1.34375 2.359375 -2.578125 2.359375 -4.78125 C 2.359375 -6.984375 3.25 -8.1875 4.953125 -8.1875 C 5.703125 -8.1875 6.1875 -7.96875 6.59375 -7.46875 C 6.84375 -7.203125 6.90625 -7.0625 7.125 -6.390625 L 9.0625 -6.828125 C 8.875 -7.375 8.765625 -7.6875 8.609375 -7.9375 C 8.3125 -8.46875 7.890625 -8.921875 7.34375 -9.25 C 6.6875 -9.640625 5.875 -9.859375 4.9375 -9.859375 C 3.75 -9.859375 2.5625 -9.421875 1.84375 -8.6875 C 0.9375 -7.78125 0.390625 -6.296875 0.390625 -4.71875 C 0.390625 -3.1875 0.90625 -1.734375 1.734375 -0.859375 C 2.46875 -0.09375 3.625 0.34375 4.9375 0.34375 C 6.375 0.34375 7.625 -0.171875 8.296875 -1.015625 C 8.65625 -1.46875 8.921875 -2.046875 9.171875 -3.015625 L 7.171875 -3.359375 Z M 7.15625 -3.203125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.59375 -9.546875 C 0.65625 -9.078125 0.6875 -8.703125 0.6875 -7.984375 L 0.6875 -1.546875 C 0.6875 -0.859375 0.65625 -0.5 0.59375 0.140625 L 2.625 0.140625 C 2.5625 -0.515625 2.53125 -0.90625 2.53125 -1.546875 L 2.53125 -7.96875 C 2.53125 -8.6875 2.5625 -9.078125 2.625 -9.671875 L 0.59375 -9.671875 Z M 0.59375 -9.546875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 2.609375 0.015625 C 2.53125 -0.5 2.515625 -0.953125 2.515625 -1.546875 L 2.515625 -3.96875 C 3.03125 -5.15625 3.609375 -5.625 4.46875 -5.625 C 4.9375 -5.625 5.1875 -5.484375 5.375 -5.171875 C 5.515625 -4.9375 5.546875 -4.71875 5.546875 -4.21875 L 5.546875 -1.546875 C 5.546875 -0.9375 5.515625 -0.53125 5.453125 0.140625 L 7.5 0.140625 C 7.40625 -0.4375 7.375 -0.890625 7.375 -1.546875 L 7.375 -4.421875 C 7.375 -5.234375 7.21875 -5.8125 6.9375 -6.203125 C 6.5 -6.796875 5.71875 -7.125 4.796875 -7.125 C 3.71875 -7.125 2.96875 -6.75 2.25 -5.8125 L 2.484375 -5.71875 C 2.515625 -6.03125 2.515625 -6.0625 2.515625 -6.234375 L 2.515625 -7.015625 L 0.578125 -7.015625 C 0.671875 -6.390625 0.703125 -5.96875 0.703125 -5.3125 L 0.703125 -1.546875 C 0.703125 -0.875 0.671875 -0.5 0.578125 0.140625 L 2.625 0.140625 Z M 2.609375 0.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 5.25 -7.78125 C 4.625 -7.78125 4.28125 -7.78125 3.75 -7.859375 C 3.796875 -7.296875 3.8125 -7 3.8125 -6.296875 L 3.8125 -2.515625 C 3.8125 -1.890625 3.796875 -1.53125 3.734375 -1.0625 L 5.40625 -1.0625 C 5.328125 -1.484375 5.3125 -1.796875 5.3125 -2.515625 L 5.3125 -2.984375 L 6.65625 -2.984375 L 6.65625 -2.609375 C 6.65625 -1.984375 6.640625 -1.625 6.5625 -1.15625 L 8.21875 -1.15625 C 8.140625 -1.65625 8.125 -1.953125 8.125 -2.609375 L 8.125 -2.984375 L 9.640625 -2.984375 L 9.640625 -2.65625 C 9.640625 -2.34375 9.78125 -2.453125 9.515625 -2.453125 C 9.328125 -2.453125 9.046875 -2.46875 8.5 -2.5625 C 8.75 -2.03125 8.8125 -1.734375 8.875 -1.109375 C 9.234375 -1.109375 9.4375 -1.109375 9.546875 -1.109375 C 10.28125 -1.109375 10.6875 -1.21875 10.890625 -1.421875 C 11.0625 -1.59375 11.140625 -1.9375 11.140625 -2.609375 L 11.140625 -6.3125 C 11.140625 -6.984375 11.15625 -7.375 11.203125 -7.875 C 10.78125 -7.78125 10.4375 -7.78125 9.84375 -7.78125 L 8.875 -7.78125 L 8.96875 -7.546875 C 9.453125 -7.859375 10.046875 -8.28125 10.53125 -8.6875 C 10.875 -8.96875 10.9375 -9.03125 11.21875 -9.203125 L 10.46875 -10.140625 C 10.203125 -10.0625 9.8125 -10.03125 9.0625 -10.03125 L 5.171875 -10.03125 C 4.5 -10.03125 4.125 -10.0625 3.59375 -10.125 L 3.59375 -8.59375 C 4.125 -8.65625 4.40625 -8.671875 4.984375 -8.671875 L 6.125 -8.671875 L 6.03125 -8.90625 L 4.9375 -8.25 C 5.421875 -8 5.453125 -7.984375 6.09375 -7.546875 L 6.203125 -7.78125 Z M 7.984375 -6.484375 L 9.640625 -6.484375 L 9.640625 -5.96875 L 8.125 -5.96875 L 8.125 -6.484375 Z M 6.65625 -6.625 L 6.65625 -5.96875 L 5.3125 -5.96875 L 5.3125 -6.484375 L 6.65625 -6.484375 Z M 5.1875 -4.75 L 6.65625 -4.75 L 6.65625 -4.21875 L 5.3125 -4.21875 L 5.3125 -4.75 Z M 9.796875 -4.21875 L 8.125 -4.21875 L 8.125 -4.75 L 9.640625 -4.75 L 9.640625 -4.21875 Z M 8.5625 -8.90625 C 8.234375 -8.609375 8.21875 -8.609375 7.46875 -8.078125 C 6.859375 -8.53125 6.75 -8.609375 6.328125 -8.90625 L 6.234375 -8.671875 L 8.671875 -8.671875 Z M 0.3125 -9.078125 C 1.15625 -8.359375 1.65625 -7.796875 2.4375 -6.734375 L 3.625 -7.890625 C 2.96875 -8.765625 2.34375 -9.421875 1.375 -10.265625 L 0.21875 -9.1875 Z M 0.453125 -4.21875 C 0.734375 -4.265625 0.921875 -4.265625 1.21875 -4.265625 L 1.6875 -4.265625 L 1.6875 -1.90625 C 1.15625 -1.421875 0.703125 -1.03125 0.078125 -0.75 L 0.859375 0.828125 C 1.90625 -0.015625 1.90625 -0.015625 2.328125 -0.4375 C 2.375 -0.484375 2.4375 -0.546875 2.40625 -0.515625 C 2.8125 -0.046875 3.234375 0.21875 3.8125 0.4375 C 4.34375 0.625 5.296875 0.734375 6.515625 0.734375 C 8.53125 0.734375 9.75 0.703125 11.421875 0.640625 C 11.53125 -0.015625 11.640625 -0.484375 11.859375 -1.078125 C 9.265625 -0.78125 8.609375 -0.75 6.640625 -0.75 C 5.5625 -0.75 4.8125 -0.8125 4.265625 -0.953125 C 4.09375 -1.015625 3.984375 -1.078125 3.75 -1.234375 C 3.5 -1.421875 3.375 -1.5625 3.203125 -1.84375 L 3.203125 -4.375 C 3.203125 -5.03125 3.21875 -5.3125 3.265625 -5.859375 C 2.84375 -5.765625 2.5625 -5.765625 2.203125 -5.765625 L 1.375 -5.765625 C 0.953125 -5.765625 0.75 -5.765625 0.3125 -5.84375 L 0.3125 -4.1875 Z M 0.453125 -4.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-17"> +<path style="stroke:none;" d="M 5.296875 -8.71875 L 4.515625 -8.71875 C 4.21875 -9.3125 4.046875 -9.578125 3.53125 -10.265625 L 1.953125 -9.8125 C 2.4375 -9.265625 2.609375 -9.03125 2.765625 -8.71875 L 2 -8.71875 C 1.484375 -8.71875 1.140625 -8.734375 0.671875 -8.796875 C 0.71875 -8.296875 0.734375 -7.984375 0.734375 -7.5625 L 0.734375 -6.765625 C 0.734375 -6.46875 0.71875 -6.203125 0.671875 -5.765625 L 2.28125 -5.765625 L 2.28125 -7.328125 L 9.75 -7.328125 L 9.75 -5.75 L 11.375 -5.75 C 11.296875 -6.171875 11.296875 -6.40625 11.296875 -6.734375 L 11.296875 -7.515625 C 11.296875 -8.03125 11.296875 -8.328125 11.359375 -8.796875 C 10.890625 -8.734375 10.640625 -8.71875 9.921875 -8.71875 L 9.1875 -8.71875 C 9.21875 -8.75 9.234375 -8.78125 9.59375 -9.296875 C 9.625 -9.375 9.6875 -9.46875 9.90625 -9.765625 L 8.3125 -10.21875 C 8.015625 -9.546875 7.78125 -9.203125 7.4375 -8.71875 L 6.71875 -8.71875 L 6.71875 -9.328125 C 6.71875 -9.65625 6.75 -9.9375 6.796875 -10.3125 L 5.0625 -10.3125 C 5.125 -9.9375 5.140625 -9.65625 5.140625 -9.328125 L 5.140625 -8.71875 Z M 5.125 -4.0625 L 5.125 -3.484375 L 2.65625 -3.484375 C 2.21875 -3.484375 1.875 -3.484375 1.40625 -3.546875 C 1.453125 -3.078125 1.46875 -2.8125 1.46875 -2.40625 L 1.46875 -0.8125 C 1.46875 -0.296875 1.4375 0.046875 1.390625 0.546875 L 3.125 0.546875 C 3.046875 0.09375 3.03125 -0.203125 3.03125 -0.78125 L 3.03125 -2.0625 L 5.125 -2.0625 L 5.125 -0.375 C 5.125 0.171875 5.109375 0.5 5.046875 1.03125 L 6.78125 1.03125 C 6.71875 0.53125 6.703125 0.1875 6.703125 -0.375 L 6.703125 -2.0625 L 9.015625 -2.0625 L 9.015625 -1.015625 C 9.015625 -0.796875 9.078125 -0.890625 8.71875 -0.890625 C 8.40625 -0.890625 8.03125 -0.90625 7.359375 -1.015625 C 7.625 -0.390625 7.671875 -0.1875 7.734375 0.484375 C 8.453125 0.515625 8.515625 0.515625 8.65625 0.515625 C 10.140625 0.515625 10.578125 0.1875 10.578125 -0.6875 L 10.578125 -2.3125 C 10.578125 -2.84375 10.59375 -3.125 10.65625 -3.546875 C 10.234375 -3.484375 9.90625 -3.484375 9.328125 -3.484375 L 6.703125 -3.484375 L 6.703125 -3.921875 L 8.25 -3.921875 C 8.703125 -3.921875 9.078125 -3.90625 9.59375 -3.875 C 9.546875 -4.265625 9.546875 -4.46875 9.546875 -5.03125 L 9.546875 -5.875 C 9.546875 -6.328125 9.546875 -6.578125 9.59375 -7 C 9.125 -6.953125 8.796875 -6.953125 8.296875 -6.953125 L 3.78125 -6.953125 C 3.34375 -6.953125 2.953125 -6.953125 2.46875 -7 C 2.515625 -6.59375 2.515625 -6.28125 2.515625 -5.890625 L 2.515625 -5.03125 C 2.515625 -4.484375 2.515625 -4.296875 2.46875 -3.875 C 2.953125 -3.90625 3.28125 -3.921875 3.765625 -3.921875 L 5.125 -3.921875 Z M 8 -5.84375 L 8 -5.171875 L 4.0625 -5.171875 L 4.0625 -5.71875 L 8 -5.71875 Z M 8 -5.84375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-18"> +<path style="stroke:none;" d="M 6.9375 -7.6875 C 7.46875 -7.640625 7.671875 -7.578125 8.046875 -7.375 C 9 -6.796875 9.484375 -5.953125 9.484375 -4.796875 C 9.484375 -3.515625 8.890625 -2.46875 7.84375 -1.890625 C 7.28125 -1.578125 6.671875 -1.421875 5.3125 -1.25 C 5.84375 -0.546875 5.953125 -0.375 6.203125 0.421875 C 7.140625 0.25 7.609375 0.125 8.1875 -0.109375 C 10.015625 -0.859375 11.234375 -2.640625 11.234375 -4.71875 C 11.234375 -7.421875 9.234375 -9.296875 6.34375 -9.296875 C 4.640625 -9.296875 3.125 -8.6875 2.109375 -7.578125 C 1.265625 -6.640625 0.75 -5.3125 0.75 -4 C 0.75 -2.0625 1.890625 -0.546875 3.25 -0.546875 C 4.234375 -0.546875 5.140625 -1.375 5.8125 -2.921875 C 6.421875 -4.28125 6.84375 -5.9375 7.046875 -7.6875 Z M 5.328125 -7.8125 C 5.1875 -6.453125 4.78125 -4.84375 4.328125 -3.75 C 3.90625 -2.71875 3.640625 -2.359375 3.234375 -2.359375 C 2.71875 -2.359375 2.421875 -3 2.421875 -3.984375 C 2.421875 -5.265625 3.015625 -6.40625 4.015625 -7.125 C 4.515625 -7.46875 4.84375 -7.609375 5.3125 -7.65625 Z M 5.328125 -7.8125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-19"> +<path style="stroke:none;" d="M 5.875 0.015625 C 5.921875 -0.265625 6.046875 -0.640625 6.25 -1.1875 L 8.8125 -8.109375 C 9.109375 -8.90625 9.21875 -9.140625 9.5 -9.671875 L 7.1875 -9.671875 C 7.109375 -9.125 7.03125 -8.875 6.84375 -8.28125 L 4.84375 -2.359375 C 4.78125 -2.140625 4.6875 -1.796875 4.578125 -1.4375 L 4.84375 -1.4375 C 4.765625 -1.734375 4.625 -2.203125 4.5625 -2.359375 L 2.5625 -8.28125 C 2.421875 -8.71875 2.296875 -9.140625 2.21875 -9.671875 L -0.09375 -9.671875 C 0.1875 -9.125 0.328125 -8.828125 0.59375 -8.109375 L 3.15625 -1.1875 C 3.359375 -0.625 3.484375 -0.25 3.5625 0.140625 L 5.859375 0.140625 Z M 5.875 0.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph2-20"> +<path style="stroke:none;" d="M 9.125 0.015625 C 9.0625 -0.40625 9.03125 -0.859375 9.03125 -1.53125 L 9.03125 -7.890625 C 9.03125 -8.609375 9.0625 -9.0625 9.15625 -9.671875 L 7.078125 -9.671875 C 7.171875 -9.078125 7.203125 -8.59375 7.203125 -7.890625 L 7.203125 -3.859375 C 7.203125 -3.34375 7.234375 -2.625 7.28125 -2.15625 L 7.53125 -2.25 C 7.265625 -2.734375 6.875 -3.359375 6.59375 -3.796875 L 3.546875 -8.359375 C 3.140625 -8.96875 2.96875 -9.234375 2.8125 -9.671875 L 0.6875 -9.671875 C 0.78125 -9.046875 0.796875 -8.609375 0.796875 -7.984375 L 0.796875 -1.796875 C 0.796875 -0.984375 0.765625 -0.390625 0.6875 0.140625 L 2.765625 0.140625 C 2.671875 -0.421875 2.640625 -0.984375 2.640625 -1.78125 L 2.640625 -5.71875 C 2.640625 -6 2.609375 -6.546875 2.609375 -6.765625 C 2.5625 -7.21875 2.5625 -7.21875 2.5625 -7.375 L 2.3125 -7.28125 C 2.609375 -6.71875 2.90625 -6.203125 3.125 -5.84375 L 6.234375 -1.171875 C 6.578125 -0.640625 6.796875 -0.296875 7.015625 0.140625 L 9.15625 0.140625 Z M 9.125 0.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph2-21"> +<path style="stroke:none;" d="M 2.765625 0.015625 C 2.6875 -0.4375 2.65625 -0.90625 2.65625 -1.546875 L 2.65625 -3.421875 L 4.828125 -3.421875 C 5.96875 -3.421875 6.890625 -3.734375 7.46875 -4.3125 C 8 -4.875 8.3125 -5.71875 8.3125 -6.625 C 8.3125 -7.484375 8.03125 -8.296875 7.53125 -8.78125 C 6.953125 -9.359375 6.046875 -9.671875 4.890625 -9.671875 L 2.375 -9.671875 C 1.734375 -9.671875 1.375 -9.6875 0.6875 -9.71875 C 0.78125 -9.03125 0.796875 -8.609375 0.796875 -8.03125 L 0.796875 -1.53125 C 0.796875 -0.890625 0.78125 -0.46875 0.6875 0.140625 L 2.78125 0.140625 Z M 2.65625 -4.9375 L 2.65625 -8.03125 L 4.828125 -8.03125 C 5.453125 -8.03125 5.75 -7.9375 6.03125 -7.625 C 6.28125 -7.359375 6.390625 -7.0625 6.390625 -6.578125 C 6.390625 -5.515625 5.921875 -5.0625 4.828125 -5.0625 L 2.65625 -5.0625 Z M 2.65625 -4.9375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-22"> +<path style="stroke:none;" d="M 4.046875 0.375 C 6.1875 0.375 7.71875 -1.21875 7.71875 -3.4375 C 7.71875 -5.65625 6.203125 -7.21875 4.03125 -7.21875 C 1.84375 -7.21875 0.3125 -5.65625 0.3125 -3.421875 C 0.3125 -1.171875 1.84375 0.375 4.046875 0.375 Z M 4.03125 -5.703125 C 5.296875 -5.703125 5.890625 -4.9375 5.890625 -3.390625 C 5.890625 -1.9375 5.265625 -1.15625 4.015625 -1.15625 C 2.765625 -1.15625 2.140625 -1.9375 2.140625 -3.421875 C 2.140625 -4.921875 2.765625 -5.703125 4.03125 -5.703125 Z M 4.03125 -5.703125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-23"> +<path style="stroke:none;" d="M 7.328125 -0.078125 C 7.015625 -0.484375 6.609375 -1 6.4375 -1.234375 L 4.75 -3.59375 L 6.3125 -5.75 C 6.5 -6.03125 6.703125 -6.28125 7.265625 -7.015625 L 5.046875 -7.015625 C 4.859375 -6.59375 4.734375 -6.390625 4.515625 -6.0625 L 3.703125 -4.859375 L 2.875 -6.0625 C 2.671875 -6.359375 2.5625 -6.546875 2.359375 -7.015625 L 0.125 -7.015625 C 0.84375 -6.078125 0.9375 -5.953125 1.0625 -5.765625 L 2.640625 -3.59375 L 0.90625 -1.15625 C 0.703125 -0.890625 0.328125 -0.40625 -0.125 0.140625 L 2.15625 0.140625 C 2.453125 -0.4375 2.515625 -0.515625 2.71875 -0.796875 L 3.703125 -2.265625 L 4.625 -0.875 C 4.875 -0.53125 4.953125 -0.40625 5.234375 0.140625 L 7.515625 0.140625 Z M 7.328125 -0.078125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-24"> +<path style="stroke:none;" d="M 2.890625 -0.46875 L 2.484375 0.453125 C 2.3125 0.828125 2.109375 0.921875 1.6875 0.921875 C 1.421875 0.921875 1.1875 0.859375 0.75 0.671875 L 0.40625 2.328125 C 1.125 2.453125 1.46875 2.5 1.84375 2.5 C 2.953125 2.5 3.796875 1.9375 4.171875 1.03125 L 6.90625 -5.390625 C 7.265625 -6.234375 7.484375 -6.71875 7.625 -7.015625 L 5.515625 -7.015625 C 5.421875 -6.484375 5.328125 -6.1875 5.046875 -5.453125 L 3.703125 -2.0625 L 3.984375 -2.0625 L 2.515625 -5.46875 C 2.296875 -5.96875 2.125 -6.53125 2.046875 -7.015625 L -0.125 -7.015625 C 0.140625 -6.515625 0.125 -6.578125 0.640625 -5.390625 Z M 2.890625 -0.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-25"> +<path style="stroke:none;" d="M 5.0625 -7.96875 L 6.5625 -7.96875 C 7.421875 -7.96875 7.890625 -7.9375 8.453125 -7.859375 L 8.453125 -9.78125 C 7.875 -9.703125 7.421875 -9.671875 6.5625 -9.671875 L 1.8125 -9.671875 C 1.125 -9.671875 0.609375 -9.703125 0.03125 -9.78125 L 0.03125 -7.859375 C 0.59375 -7.9375 1.109375 -7.96875 1.828125 -7.96875 L 3.296875 -7.96875 L 3.296875 -1.546875 C 3.296875 -0.90625 3.28125 -0.484375 3.1875 0.140625 L 5.3125 0.140625 C 5.21875 -0.484375 5.203125 -0.90625 5.203125 -1.546875 L 5.203125 -7.96875 Z M 5.0625 -7.96875 "/> +</symbol> +</g> +<image id="image7" width="193" height="67" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMEAAABDCAAAAAAAUT6TAAAAAmJLR0QA/4ePzL8AAANgSURBVGiB7ZpRbxs5DIRnqLX//9+9eDnTB0r25uK7Fu2qkQEPECRZ+0HfkhQlksBbb/2p+EuP1pG/PHksl+z/Lk9gAL6jjOWSYABcHAAwYNi+M2z1iyQZBFcHAAzDsodHFQHJYARfAKBMQFkdYRBERDSQfBIrS4mGjaSgAwFBMlpjAM/CfSERgG3uME3jYIPWthYgvD4BIGG3y1/KBoyI1hoJU9R3LvH/xbHpR7P9KQ5IkrANeWUCBkkwCLLssT0+I21b1soEAYZJBMeuOQgIArYlLU1gN0UttxthZLQe5JKUKxMAaAr2QxBwjwMAgCFJuToBWsVwR9juzw3JUq5PME4On7wIsBUFsD4Bx7mOBuLwsbu+ZW2/pidLjP/88qvoTfD9en2C7edf+Q0dbkqPoJu0Q8wgIBE9yfcfGDDnHNwnEJDBYBRB3/hs2J6CcD5BXTaCQXhURew6scxwpQkEUfe9vkfIpC1bmZiBcDoBwWiXbSBYIO2UEjD0GjZobbtct1ZGEEgrM3fAqMv5qTrfBsHYLtfrtQVpQgg699w/LGlCOWrCXhTR2uV6KSPQDDhve2hvOaOeNmUvYtsqmE2ChEV6i8fd9kxNyclR9ae6DDLs3NQzxPmaQlC3D5Cu4ogZ7FXn83U+QWVfKxmw3UzLkmRNScoTbGBbmQw4hFBA1p6Z6RfJB5CVuQOt0WYDLOy3j49MTQCY4UXO3G9QtqAVJGTr9s/tljMAziewmDuhvUXAYgAytH/c9v01bGBaSTgiKhHQApT7nqkZdZAJXiQmLAYJGwRkIDPl1/AimEK9fBSBDUCS9SL5AIZgjVIsRv9XmFNLm0JgV1fUj4syJq1/zqnC8JNSxSzNqbb8zW7ikYCjnbaunizx0EcLMO6Rt6gYrdXsQfWc0An6aTjg5VvirUVE8PCmywb1N3sVdWmCiNa96PNsS+17HWFlgojWy4FjlSMODAMEAjy/IHKiIhjoIzrHnj6qvwMCTUsT1LUV0L9s0LtTrPe/NEFtQrqbAK2eYxwDHuXmJVWzH5YypYMX2RYA9/mitQlqufsAuO9FdZisGa+VCcaMl+6Fj5EPFDlOlGsTlJ/32g1wyGii3Wcd1yYYs44jko/zpmWCpWcF+XXe9NnM78oEX2d+33rrLeAHwtQnZW3d1E0AAAAASUVORK5CYII="/> +<mask id="mask0"> +<use xlink:href="#image7"/> +</mask> +<image id="image6" width="193" height="67" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMEAAABDCAIAAACqWPYYAAAABmJLR0QA/wD/AP+gvaeTAAAAPUlEQVR4nO3BMQEAAADCoPVPbQ0PoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg2wCXzAABfRAmogAAAABJRU5ErkJggg=="/> +<image id="image13" width="213" height="67" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANUAAABDCAAAAAAuFB8BAAAAAmJLR0QA/4ePzL8AAANjSURBVGiB7ZvbcuM4EEMBtJL//96YBPaBlOTMZmr2xk04FbzYllxlnWKz2TcD3/rWZ4p/6dKXVv586UYg58cdqQIgN96JQIICuB8UECBIcnMd44UkKYIbQgFBECeXNQ4qkqLEPaHGUtHxiXVSSVKB5Eeb74uLQYJOw89UBElVUcCHPuVLiwCSsCEMAzytVdVRApEtqQAbLZmmNtaKkqqKRGj6Ex/x74vnmaRK8n5fkSSRBM5mVBRJUAQ5nd1x3ySTxPFmVAIVEuLlwE8qgkAS27tRJWUNgnOxzlN4ehLb7ptRASiLM+YDcO0rAEBg231DKtTwEyfWcd0I7Nh9S6ozKHpvgUBiDagtqXjGtgwAPd3P1Gc82z/XR0+tn315a31T7aPfk+r49Vf+le6T8c4F1rujpVQcMQzvisl8s9rPrqQadYOZX58gCRJzLddaKpUk8iwDEYgRm15rhwupSFVVlSZVQCAddrsrDGu0mOo4jirNtQIR225oV4VhjZZaoOp4PV5KnE5CTO+9C8lSqIVUpFTHy+vLUURAhGR6a4324mhzrQWqXl5ejyIDKhTSWnvz0fvaaurKtZr1uKNEACKFlNBLWlwiXnwKz5ocAIpigPRaX/heGgfOPA4QrwLXmXjv6tlH+8XplBEDGoW5bq/OTddRjdCouxOQQxWRuLXed/aBgO3eGFsOSkySx+Pt0brXhrcLqWL1VkqV6IBiAve3t0d31mKttMC4N/pQkTEoxkB/PB6P3re1wBhocBdFBxASoPfWVkOt9YFxizsFwIMqiHu3N95XMBBfLaTZMesejemVWrpWNJJZw8+V53vvDB+mYc627Nnd/D96tGtrTCP/HW+X/tAPWl05+5ze+TMVz/bwVvrooZ/6wgJ11ew2UlVJ1EwG7smEmTAI2XGMpCRpZlTv5pjGB85sa0Mqkld5GJcFDm87sTajks6KQd6v1bxAQODSmtYCScNbJDmxnvrC43Ap70Y15hrznNzMfTX0g3VuIhJMYOQKmmvcwNWQWR+k/ccazQnb3fbzdFYSA8icD9yQKkHv/coFTh8YE5iznJtRYRiYu/NulhOB1ZNZftyOKgicG+o+hc1kFiF3oxrewPG1eZ7n2cdS7TZPfFI9z7N/9N+DvagAnM77s5/iW9/6rfUHmhMoXEYSwgsAAAAASUVORK5CYII="/> +<mask id="mask1"> +<use xlink:href="#image13"/> +</mask> +<image id="image12" width="213" height="67" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANUAAABDCAIAAACEHdeKAAAABmJLR0QA/wD/AP+gvaeTAAAAQElEQVR4nO3BMQEAAADCoPVPbQZ/oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4DengAABPQd6vwAAAABJRU5ErkJggg=="/> +</defs> +<g id="surface1"> +<rect x="0" y="0" width="492" height="252" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<use xlink:href="#image6" mask="url(#mask0)" transform="matrix(1,0,0,1,17.5,112)"/> +<use xlink:href="#image12" mask="url(#mask1)" transform="matrix(1,0,0,1,259.4995,112)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.882812 280.542969 L 91.15625 176.460938 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.648438 171.636719 L 195.355469 285.359375 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 162.410156 287.589844 C 171.199219 296.375 171.199219 310.625 162.410156 319.410156 C 153.625 328.195312 139.378906 328.195312 130.589844 319.410156 C 121.804688 310.625 121.804688 296.375 130.589844 287.589844 C 139.378906 278.804688 153.625 278.804688 162.410156 287.589844 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="92.167922" y="222.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.410156 287.589844 C 108.199219 296.375 108.199219 310.625 99.410156 319.410156 C 90.625 328.195312 76.378906 328.195312 67.589844 319.410156 C 58.804688 310.625 58.804688 296.375 67.589844 287.589844 C 76.378906 278.804688 90.625 278.804688 99.410156 287.589844 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="29.168132" y="222.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 225.410156 287.589844 C 234.199219 296.375 234.199219 310.625 225.410156 319.410156 C 216.625 328.195312 202.378906 328.195312 193.589844 319.410156 C 184.804688 310.625 184.804688 296.375 193.589844 287.589844 C 202.378906 278.804688 216.625 278.804688 225.410156 287.589844 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="155.167692" y="222.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 108.410156 137.589844 C 117.199219 146.375 117.199219 160.625 108.410156 169.410156 C 99.625 178.195312 85.378906 178.195312 76.589844 169.410156 C 67.804688 160.625 67.804688 146.375 76.589844 137.589844 C 85.378906 128.804688 99.625 128.804688 108.410156 137.589844 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="38.499797" y="72.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 138.707031 281.855469 L 100.292969 175.144531 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 284.410156 287.589844 C 293.199219 296.375 293.199219 310.625 284.410156 319.410156 C 275.625 328.195312 261.378906 328.195312 252.589844 319.410156 C 243.804688 310.625 243.804688 296.375 252.589844 287.589844 C 261.378906 278.804688 275.625 278.804688 284.410156 287.589844 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="214.167392" y="222.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 78 203.5 L 249 203.5 L 249 248.5 L 78 248.5 Z M 78 203.5 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="102.862" y="147.5"/> + <use xlink:href="#glyph1-2" x="111.442" y="147.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 110.007812 168.417969 L 250.996094 288.582031 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="131.8385" y="57"/> + <use xlink:href="#glyph2-2" x="140.4185" y="57"/> + <use xlink:href="#glyph2-3" x="153.1145" y="57"/> + <use xlink:href="#glyph2-4" x="157.1105" y="57"/> + <use xlink:href="#glyph2-3" x="160.3505" y="57"/> + <use xlink:href="#glyph2-1" x="164.3465" y="57"/> + <use xlink:href="#glyph2-5" x="172.9265" y="57"/> + <use xlink:href="#glyph2-6" x="183.1265" y="57"/> + <use xlink:href="#glyph2-7" x="186.3785" y="57"/> + <use xlink:href="#glyph2-8" x="191.5865" y="57"/> + <use xlink:href="#glyph2-9" x="199.0865" y="57"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="138.0305" y="75"/> + <use xlink:href="#glyph2-3" x="146.6105" y="75"/> + <use xlink:href="#glyph2-4" x="150.6065" y="75"/> + <use xlink:href="#glyph2-3" x="153.8465" y="75"/> + <use xlink:href="#glyph2-1" x="157.8425" y="75"/> + <use xlink:href="#glyph2-10" x="166.4225" y="75"/> + <use xlink:href="#glyph2-11" x="174.0665" y="75"/> + <use xlink:href="#glyph2-12" x="179.9705" y="75"/> + <use xlink:href="#glyph2-10" x="187.4225" y="75"/> + <use xlink:href="#glyph2-11" x="195.0665" y="75"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-13" x="140.6525" y="93"/> + <use xlink:href="#glyph2-3" x="150.1685" y="93"/> + <use xlink:href="#glyph2-4" x="154.1645" y="93"/> + <use xlink:href="#glyph2-3" x="157.4045" y="93"/> + <use xlink:href="#glyph2-13" x="161.4005" y="93"/> + <use xlink:href="#glyph2-14" x="170.9165" y="93"/> + <use xlink:href="#glyph2-6" x="174.1685" y="93"/> + <use xlink:href="#glyph2-10" x="177.4205" y="93"/> + <use xlink:href="#glyph2-15" x="185.0645" y="93"/> + <use xlink:href="#glyph2-7" x="193.1405" y="93"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-16" x="64.11295" y="20.5"/> + <use xlink:href="#glyph2-17" x="76.11295" y="20.5"/> + <use xlink:href="#glyph2-18" x="88.11295" y="20.5"/> + <use xlink:href="#glyph2-19" x="100.11295" y="20.5"/> + <use xlink:href="#glyph2-20" x="109.52095" y="20.5"/> + <use xlink:href="#glyph2-13" x="119.37295" y="20.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 327.523438 280.5 L 327.628906 171.5 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 406.410156 287.589844 C 415.195312 296.375 415.195312 310.625 406.410156 319.410156 C 397.625 328.195312 383.375 328.195312 374.589844 319.410156 C 365.804688 310.625 365.804688 296.375 374.589844 287.589844 C 383.375 278.804688 397.625 278.804688 406.410156 287.589844 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="336.166992" y="222.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 343.410156 287.589844 C 352.195312 296.375 352.195312 310.625 343.410156 319.410156 C 334.625 328.195312 320.378906 328.195312 311.589844 319.410156 C 302.804688 310.625 302.804688 296.375 311.589844 287.589844 C 320.378906 278.804688 334.625 278.804688 343.410156 287.589844 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="273.167192" y="222.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 469.410156 287.589844 C 478.195312 296.375 478.195312 310.625 469.410156 319.410156 C 460.621094 328.195312 446.375 328.195312 437.589844 319.410156 C 428.804688 310.625 428.804688 296.375 437.589844 287.589844 C 446.375 278.804688 460.621094 278.804688 469.410156 287.589844 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="399.166792" y="222.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 343.410156 132.589844 C 352.195312 141.375 352.195312 155.625 343.410156 164.410156 C 334.625 173.195312 320.378906 173.195312 311.589844 164.410156 C 302.804688 155.625 302.804688 141.375 311.589844 132.589844 C 320.378906 123.804688 334.625 123.804688 343.410156 132.589844 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="273.498247" y="67.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 524.410156 287.589844 C 533.195312 296.375 533.195312 310.625 524.410156 319.410156 C 515.621094 328.195312 501.375 328.195312 492.589844 319.410156 C 483.800781 310.625 483.800781 296.375 492.589844 287.589844 C 501.375 278.804688 515.621094 278.804688 524.410156 287.589844 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="454.166392" y="222.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 320 203.5 L 510 203.5 L 510 248.5 L 320 248.5 Z M 320 203.5 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="354.3618" y="147.5"/> + <use xlink:href="#glyph1-2" x="362.9418" y="147.5"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="375.8375" y="57"/> + <use xlink:href="#glyph2-2" x="384.4175" y="57"/> + <use xlink:href="#glyph2-3" x="397.1135" y="57"/> + <use xlink:href="#glyph2-4" x="401.1095" y="57"/> + <use xlink:href="#glyph2-3" x="404.3495" y="57"/> + <use xlink:href="#glyph2-1" x="408.3455" y="57"/> + <use xlink:href="#glyph2-5" x="416.9255" y="57"/> + <use xlink:href="#glyph2-6" x="427.1255" y="57"/> + <use xlink:href="#glyph2-7" x="430.3775" y="57"/> + <use xlink:href="#glyph2-8" x="435.5855" y="57"/> + <use xlink:href="#glyph2-9" x="443.0855" y="57"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-21" x="384.9095" y="75"/> + <use xlink:href="#glyph2-3" x="393.4415" y="75"/> + <use xlink:href="#glyph2-4" x="397.4375" y="75"/> + <use xlink:href="#glyph2-3" x="400.6775" y="75"/> + <use xlink:href="#glyph2-21" x="404.6735" y="75"/> + <use xlink:href="#glyph2-11" x="413.2055" y="75"/> + <use xlink:href="#glyph2-22" x="419.1095" y="75"/> + <use xlink:href="#glyph2-23" x="427.1495" y="75"/> + <use xlink:href="#glyph2-24" x="434.5535" y="75"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-13" x="384.6515" y="93"/> + <use xlink:href="#glyph2-3" x="394.1675" y="93"/> + <use xlink:href="#glyph2-4" x="398.1635" y="93"/> + <use xlink:href="#glyph2-3" x="401.4035" y="93"/> + <use xlink:href="#glyph2-13" x="405.3995" y="93"/> + <use xlink:href="#glyph2-14" x="414.9155" y="93"/> + <use xlink:href="#glyph2-6" x="418.1675" y="93"/> + <use xlink:href="#glyph2-10" x="421.4195" y="93"/> + <use xlink:href="#glyph2-15" x="429.0635" y="93"/> + <use xlink:href="#glyph2-7" x="437.1395" y="93"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-25" x="311.802" y="20.5"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-11" x="319.23" y="20.5"/> + <use xlink:href="#glyph2-10" x="325.134" y="20.5"/> + <use xlink:href="#glyph2-10" x="332.778" y="20.5"/> + <use xlink:href="#glyph2-19" x="340.422" y="20.5"/> + <use xlink:href="#glyph2-20" x="349.83" y="20.5"/> + <use xlink:href="#glyph2-13" x="359.682" y="20.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 339.335938 283.773438 L 339.335938 236 L 383.226562 236 L 383.226562 281.675781 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 403.292969 284.382812 L 403.292969 237 L 447.335938 237 L 447.335938 281.335938 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 465.859375 284.097656 L 465.859375 237.238281 L 504.140625 237.238281 L 504.140625 280.914062 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.027344 185.859375 C 152.988281 188.007812 152.988281 191.492188 139.027344 193.640625 C 125.066406 195.785156 102.429688 195.785156 88.46875 193.640625 C 74.507812 191.492188 74.507812 188.007812 88.46875 185.859375 C 102.429688 183.714844 125.066406 183.714844 139.027344 185.859375 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 406.996094 260.859375 C 415 263.007812 415 266.492188 406.996094 268.640625 C 398.988281 270.785156 386.011719 270.785156 378.003906 268.640625 C 370 266.492188 370 263.007812 378.003906 260.859375 C 386.011719 258.714844 398.988281 258.714844 406.996094 260.859375 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 467.996094 260.609375 C 476 262.757812 476 266.242188 467.996094 268.390625 C 459.988281 270.535156 447.011719 270.535156 439.003906 268.390625 C 431 266.242188 431 262.757812 439.003906 260.609375 C 447.011719 258.464844 459.988281 258.464844 467.996094 260.609375 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 345.996094 260.859375 C 354 263.007812 354 266.492188 345.996094 268.640625 C 337.988281 270.785156 325.011719 270.785156 317.003906 268.640625 C 309 266.492188 309 263.007812 317.003906 260.859375 C 325.011719 258.714844 337.988281 258.714844 345.996094 260.859375 " transform="matrix(1,0,0,1,-49.5,-84.5)"/> +</g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/images/vnc.svg Thu Jan 07 19:39:55 2016 +0900 @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="360pt" height="194pt" viewBox="0 0 360 194" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 0.390625 0 L 0.390625 -8.609375 L 7.21875 -8.609375 L 7.21875 0 Z M 6.140625 -1.078125 L 6.140625 -7.53125 L 1.46875 -7.53125 L 1.46875 -1.078125 Z M 6.140625 -1.078125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 1.59375 -8.609375 L 4.0625 -1.28125 L 6.515625 -8.609375 L 7.8125 -8.609375 L 4.671875 0 L 3.4375 0 L 0.3125 -8.609375 Z M 1.59375 -8.609375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 0.921875 -8.609375 L 2.296875 -8.609375 L 6.640625 -1.640625 L 6.640625 -8.609375 L 7.75 -8.609375 L 7.75 0 L 6.4375 0 L 2.03125 -6.96875 L 2.03125 0 L 0.921875 0 Z M 4.25 -8.609375 Z M 4.25 -8.609375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 1 -10.453125 L 1 1.203125 L 10.984375 1.203125 L 10.984375 -10.578125 L 1 -10.578125 Z M 9.640625 -9.921875 L 6 -5.453125 L 2.5625 -9.703125 L 9.4375 -9.703125 Z M 10.3125 -0.125 L 6.625 -4.6875 L 10.3125 -9.234375 L 9.96875 -9.328125 L 9.96875 -0.03125 Z M 2.375 0.546875 L 6 -3.921875 L 9.4375 0.3125 L 2.5625 0.3125 Z M 2.015625 -0.03125 L 2.015625 -9.34375 L 1.6875 -9.25 L 5.375 -4.6875 L 1.6875 -0.125 Z M 2.015625 -0.03125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 9.125 0.015625 C 9.0625 -0.40625 9.03125 -0.859375 9.03125 -1.53125 L 9.03125 -7.890625 C 9.03125 -8.609375 9.0625 -9.0625 9.15625 -9.671875 L 7.078125 -9.671875 C 7.171875 -9.078125 7.203125 -8.59375 7.203125 -7.890625 L 7.203125 -3.859375 C 7.203125 -3.34375 7.234375 -2.625 7.28125 -2.15625 L 7.53125 -2.25 C 7.265625 -2.734375 6.875 -3.359375 6.59375 -3.796875 L 3.546875 -8.359375 C 3.140625 -8.96875 2.96875 -9.234375 2.8125 -9.671875 L 0.6875 -9.671875 C 0.78125 -9.046875 0.796875 -8.609375 0.796875 -7.984375 L 0.796875 -1.796875 C 0.796875 -0.984375 0.765625 -0.390625 0.6875 0.140625 L 2.765625 0.140625 C 2.671875 -0.421875 2.640625 -0.984375 2.640625 -1.78125 L 2.640625 -5.71875 C 2.640625 -6 2.609375 -6.546875 2.609375 -6.765625 C 2.5625 -7.21875 2.5625 -7.21875 2.5625 -7.375 L 2.3125 -7.28125 C 2.609375 -6.71875 2.90625 -6.203125 3.125 -5.84375 L 6.234375 -1.171875 C 6.578125 -0.640625 6.796875 -0.296875 7.015625 0.140625 L 9.15625 0.140625 Z M 9.125 0.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 0.59375 -6.875 L 0.59375 -4.984375 L 2.625 -4.984375 L 2.625 -7.015625 L 0.59375 -7.015625 Z M 0.59375 -1.734375 L 0.59375 0.140625 L 2.625 0.140625 L 2.625 -1.875 L 0.59375 -1.875 Z M 0.59375 -1.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 4.046875 0.375 C 6.1875 0.375 7.71875 -1.21875 7.71875 -3.4375 C 7.71875 -5.65625 6.203125 -7.21875 4.03125 -7.21875 C 1.84375 -7.21875 0.3125 -5.65625 0.3125 -3.421875 C 0.3125 -1.171875 1.84375 0.375 4.046875 0.375 Z M 4.03125 -5.703125 C 5.296875 -5.703125 5.890625 -4.9375 5.890625 -3.390625 C 5.890625 -1.9375 5.265625 -1.15625 4.015625 -1.15625 C 2.765625 -1.15625 2.140625 -1.9375 2.140625 -3.421875 C 2.140625 -4.921875 2.765625 -5.703125 4.03125 -5.703125 Z M 4.03125 -5.703125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M 6.125 0.140625 L 7.875 0.140625 C 7.796875 -0.515625 7.78125 -0.90625 7.78125 -1.609375 L 7.78125 -7.9375 C 7.78125 -8.546875 7.796875 -8.96875 7.875 -9.671875 L 5.875 -9.671875 C 5.953125 -9.03125 5.96875 -8.640625 5.96875 -7.921875 L 5.96875 -6.71875 C 5.96875 -6.515625 5.96875 -6.28125 5.984375 -6.203125 C 6 -5.96875 6 -5.96875 6 -5.8125 L 6.234375 -5.921875 C 5.96875 -6.265625 5.84375 -6.40625 5.625 -6.578125 C 5.15625 -6.953125 4.453125 -7.15625 3.703125 -7.15625 C 1.734375 -7.15625 0.328125 -5.640625 0.328125 -3.4375 C 0.328125 -2.140625 0.796875 -0.953125 1.609375 -0.34375 C 2.140625 0.078125 2.875 0.3125 3.71875 0.3125 C 4.890625 0.3125 5.609375 -0.03125 6.234375 -0.90625 L 6 -1.015625 C 5.984375 -0.859375 5.984375 -0.71875 5.984375 -0.578125 L 5.984375 0.140625 Z M 2.15625 -3.4375 C 2.15625 -4.859375 2.765625 -5.640625 3.9375 -5.640625 C 4.515625 -5.640625 5.015625 -5.40625 5.390625 -5 C 5.734375 -4.625 5.921875 -4.09375 5.921875 -3.5 C 5.921875 -2.875 5.796875 -2.390625 5.5 -1.984375 C 5.140625 -1.5 4.625 -1.234375 4 -1.234375 C 2.796875 -1.234375 2.15625 -2 2.15625 -3.4375 Z M 2.15625 -3.4375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M 7.328125 -3.03125 C 7.3125 -3.3125 7.3125 -3.34375 7.3125 -3.375 C 7.265625 -4.1875 7.1875 -4.625 6.953125 -5.203125 C 6.484375 -6.390625 5.25 -7.21875 3.84375 -7.21875 C 1.78125 -7.21875 0.3125 -5.640625 0.3125 -3.421875 C 0.3125 -1.171875 1.796875 0.375 3.921875 0.375 C 4.9375 0.375 5.875 0.03125 6.484375 -0.59375 C 6.796875 -0.890625 6.984375 -1.21875 7.296875 -1.875 L 5.625 -2.40625 C 5.453125 -1.921875 5.40625 -1.890625 5.25 -1.71875 C 4.90625 -1.328125 4.515625 -1.15625 3.921875 -1.15625 C 3.3125 -1.15625 2.875 -1.359375 2.515625 -1.78125 C 2.25 -2.140625 2.171875 -2.375 2.125 -2.90625 L 7.34375 -2.90625 Z M 2.140625 -4.21875 C 2.328125 -5.234375 2.875 -5.71875 3.8125 -5.71875 C 4.375 -5.71875 4.6875 -5.609375 5 -5.28125 C 5.296875 -4.984375 5.40625 -4.75 5.46875 -4.359375 L 2.171875 -4.359375 Z M 2.140625 -4.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 5.875 0.015625 C 5.921875 -0.265625 6.046875 -0.640625 6.25 -1.1875 L 8.8125 -8.109375 C 9.109375 -8.90625 9.21875 -9.140625 9.5 -9.671875 L 7.1875 -9.671875 C 7.109375 -9.125 7.03125 -8.875 6.84375 -8.28125 L 4.84375 -2.359375 C 4.78125 -2.140625 4.6875 -1.796875 4.578125 -1.4375 L 4.84375 -1.4375 C 4.765625 -1.734375 4.625 -2.203125 4.5625 -2.359375 L 2.5625 -8.28125 C 2.421875 -8.71875 2.296875 -9.140625 2.21875 -9.671875 L -0.09375 -9.671875 C 0.1875 -9.125 0.328125 -8.828125 0.59375 -8.109375 L 3.15625 -1.1875 C 3.359375 -0.625 3.484375 -0.25 3.5625 0.140625 L 5.859375 0.140625 Z M 5.875 0.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 7.15625 -3.203125 C 7.0625 -2.65625 7 -2.5 6.796875 -2.203125 C 6.40625 -1.625 5.796875 -1.34375 4.953125 -1.34375 C 3.28125 -1.34375 2.359375 -2.578125 2.359375 -4.78125 C 2.359375 -6.984375 3.25 -8.1875 4.953125 -8.1875 C 5.703125 -8.1875 6.1875 -7.96875 6.59375 -7.46875 C 6.84375 -7.203125 6.90625 -7.0625 7.125 -6.390625 L 9.0625 -6.828125 C 8.875 -7.375 8.765625 -7.6875 8.609375 -7.9375 C 8.3125 -8.46875 7.890625 -8.921875 7.34375 -9.25 C 6.6875 -9.640625 5.875 -9.859375 4.9375 -9.859375 C 3.75 -9.859375 2.5625 -9.421875 1.84375 -8.6875 C 0.9375 -7.78125 0.390625 -6.296875 0.390625 -4.71875 C 0.390625 -3.1875 0.90625 -1.734375 1.734375 -0.859375 C 2.46875 -0.09375 3.625 0.34375 4.9375 0.34375 C 6.375 0.34375 7.625 -0.171875 8.296875 -1.015625 C 8.65625 -1.46875 8.921875 -2.046875 9.171875 -3.015625 L 7.171875 -3.359375 Z M 7.15625 -3.203125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M 0.390625 -2.78125 C 0.46875 -2.296875 0.515625 -2.0625 0.625 -1.78125 C 0.859375 -1.203125 1.234375 -0.640625 1.71875 -0.328125 C 2.296875 0.0625 3.359375 0.34375 4.34375 0.34375 C 5.625 0.34375 6.671875 0 7.3125 -0.609375 C 7.796875 -1.109375 8.09375 -1.890625 8.09375 -2.75 C 8.09375 -3.640625 7.75 -4.40625 7.0625 -4.90625 C 6.640625 -5.203125 5.96875 -5.46875 5.015625 -5.671875 C 3.6875 -5.96875 3.59375 -6 3.328125 -6.109375 C 2.765625 -6.34375 2.640625 -6.5625 2.640625 -7.0625 C 2.640625 -7.84375 3.21875 -8.25 4.265625 -8.25 C 4.921875 -8.25 5.34375 -8.078125 5.65625 -7.703125 C 5.859375 -7.46875 5.90625 -7.359375 6 -6.796875 L 7.984375 -7.03125 C 7.828125 -7.78125 7.640625 -8.25 7.34375 -8.640625 C 6.75 -9.4375 5.625 -9.890625 4.265625 -9.890625 C 2.203125 -9.890625 0.703125 -8.671875 0.703125 -7.015625 C 0.703125 -6.203125 1.0625 -5.453125 1.671875 -4.96875 C 2.09375 -4.625 2.6875 -4.40625 3.59375 -4.203125 C 5.25 -3.8125 5.203125 -3.84375 5.5625 -3.640625 C 5.9375 -3.4375 6.125 -3.125 6.125 -2.640625 C 6.125 -1.734375 5.5625 -1.328125 4.359375 -1.328125 C 3.578125 -1.328125 3.046875 -1.546875 2.703125 -2 C 2.484375 -2.28125 2.453125 -2.421875 2.390625 -3.109375 L 0.390625 -2.90625 Z M 0.390625 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 5.765625 -7.015625 C 5.234375 -7.109375 4.9375 -7.140625 4.65625 -7.140625 C 3.578125 -7.140625 2.71875 -6.703125 2.296875 -5.84375 L 2.53125 -5.75 L 2.53125 -7.015625 L 0.59375 -7.015625 C 0.703125 -6.390625 0.703125 -6.046875 0.703125 -5.3125 L 0.703125 -1.546875 C 0.703125 -0.921875 0.6875 -0.578125 0.609375 0.140625 L 2.625 0.140625 C 2.5625 -0.546875 2.53125 -0.90625 2.53125 -1.546875 L 2.53125 -3.765625 C 2.609375 -4.34375 2.6875 -4.53125 2.984375 -4.875 C 3.328125 -5.265625 3.6875 -5.421875 4.28125 -5.421875 C 4.59375 -5.421875 4.84375 -5.375 5.4375 -5.203125 L 5.921875 -6.984375 Z M 5.765625 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 4.71875 0.015625 C 4.796875 -0.34375 4.84375 -0.4375 5.078125 -1.0625 L 6.921875 -5.609375 C 7.15625 -6.203125 7.265625 -6.4375 7.53125 -7.015625 L 5.390625 -7.015625 C 5.3125 -6.546875 5.25 -6.328125 5.0625 -5.765625 L 3.84375 -2.28125 C 3.75 -2.046875 3.65625 -1.734375 3.578125 -1.46875 L 3.859375 -1.46875 C 3.78125 -1.734375 3.671875 -2.09375 3.59375 -2.28125 L 2.375 -5.765625 C 2.21875 -6.203125 2.109375 -6.609375 2.046875 -7.015625 L -0.09375 -7.015625 C 0.203125 -6.375 0.390625 -5.921875 0.53125 -5.609375 L 2.359375 -1.0625 C 2.609375 -0.453125 2.65625 -0.3125 2.765625 0.140625 L 4.6875 0.140625 Z M 4.71875 0.015625 "/> +</symbol> +</g> +<image id="image7" width="76" height="71" xlink:href="data:image/png;base64,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"/> +<mask id="mask0"> +<use xlink:href="#image7"/> +</mask> +<image id="image6" width="76" height="71" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAABHCAIAAAAiMja/AAAABmJLR0QA/wD/AP+gvaeTAAAAJUlEQVRoge3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAqAY/gwABvwkpDgAAAABJRU5ErkJggg=="/> +<image id="image13" width="76" height="71" xlink:href="data:image/png;base64,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"/> +<mask id="mask1"> +<use xlink:href="#image13"/> +</mask> +<image id="image12" width="76" height="71" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAABHCAIAAAAiMja/AAAABmJLR0QA/wD/AP+gvaeTAAAAJUlEQVRoge3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAqAY/gwABvwkpDgAAAABJRU5ErkJggg=="/> +<image id="image19" width="76" height="71" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAABHCAAAAACIO/40AAAAAmJLR0QA/4ePzL8AAAXESURBVFiF7ZjLguOoDoZ1AXzJrd//KSep2MaApFlgO05VUtV9Ti+HRRZ29PkXICEB8N/404E/vcb1PwZgYP8rDBEIEREQAcAMzMwU7D3wHQwRCYmQkYAAwUBBTUzV1N7xXsMQCZmJmZgICQHA1FRFRVTE9DXuFQyRiJmdY+eYGQkRzNREpBQpRUT0Je4rrKK8894F55xjWmAqpZSSSs4lv8a5LywiZu99aEJovPeOmQjBVEVKznlOaU4uZxH5srafYUTkXAihbdq2aULjnSNGBDPRUvKc5jnGOaaUCqrqdzBEchxC03Zt13Vd0wTvHDEQKIiWktM8T9M0NdPECQt82ifumcXsfdt23aE/9G3XNOHTnKV5nuI4jN5PjJQ/ueo+sUJou/5wPBz7vmub4DwTLftMVXJJc5y6tm3ujikCwBPNfWZ1/eF4Oh2Oh74NIbAjxiUCTLRISil2bdN4x4SA6Ym2hzGH0B0Pp/P5eDr0bRu8q7tsgamJlJyapgnVfQBIIK9gROxDdzyeL+fz6biwCAkREAAMzNRUSgghhOAcES6xr19giMShPRzOl1/n86nv2uCYGRcULDgTds75+qpGvhraFxi50PSH8+XXr/PpUFmE+whBQANiqUFGiKBmqvaIe7ex2IW2P57Ol8vp2DfBMdGCIgAAUABAAEYiIiYEUNFSRB5ZZAcLTd+fzpfz8dh33jHhHgVAC44QERFqgOVSRFSfYUjkQ9sdj6fj8dB3wRFXWStqj2NABFCVnFPKpQgt0lYYOhfa/ng8HvvqI+An1IZDYwSr2yTNKSW3SuPlXy60/el8uVxOh75xzC9ZAIBWD4YaYVJKTW97GLJv2sPpfLmcTn3j3VvWSiMAgCUp5Q1Gj7UMbd91beMXH+klqz5HIHa+bbuub0NwTLibM0R2vmnbrm2839bxm4FA7H3Tdm3beMdPC4/MzoembYKve/WNj7DZID2Z7GCIxM6HJgTvlxffsFYjZu9DaMJjT9bnhMzOe++dqxnnWxYAASAiu82GdgqQiNk5x46IfpwwWG3IsXPuYbNIQCRmx096f3a0GtG2YLSxiIjp94VVaYsZPi0AIiCtefBnYasdIBJRtd+5WYkIPxZZO2WbDHhyEwzAliz3fQm2GwbV6FG2EWyPVG15rG8B29CKM1NVWJNtVWamoqqiuiW631Cmi4msNczqpqlITcG/JU1fGG3KVEVKKVJ+X5qpapFSimw2dc7q8ZpzLkXM7EdpWk/4stnoY87MVEpOc0o5i/zsaHVSJOeU5pTL6ujipkjJaY5zymXJm9/QFABMn0z2C2AmJc8xTnHOWd6Uv/thppLzHKcY51zkaTVNpaQUx2mKcy6iYACfy8JNlwIYqJQ8x2kaY0plPQPcBstznMaubZwjRDIE0FcxqgBgIFJynKZxXL7+dNQh1PzonGOmtV6xr3FaWaoyx+F+u91uH+OUyjMMEIiImZm5phQCBLBPOK3BK1pSHIbb7Xq9DdOcZJmRFVa1IRPT0pMsZdkOV79f99E03j9u19v1PsZ5XcwdDAGREJFoLcqecQsKVKWkON7v13+ut/swzWUV9oAtCW3NaovaBbemBVuWquq63j6Gcc5lC8Ad7NFdGlhNcCsSFpJpKSXP0zjcrtd/rrdhiPODtYPhhqlK9PFbq+OaDPIcx/F+u12v19swxLTtWNgXyAoCWBsbyTmlt9V2jOPwcb/dPob7lLLsNveudDeBBGCqpeQ8z/38rg8Yh/vw8XEfxikl2VXuTzAQSFsGidPbDmUc78N9GKeYkoi9hlWamUpJ83SY2q4N3j/1TjmnOMVxGIdpijHnZ9ZzI2YgdR/lHKddV4cAYPuuLk5xTkmKftPVgRkUNZGS5ji1TRNC2PoHESkp7frN8kO/CaDrpIX4TSdca88vp8Vf7dF/7/YAlkPnj28PFhwyExP/3/caFffXblwW3t+6C9pe/8kt1X/jz8e/Syma6uLqyMAAAAAASUVORK5CYII="/> +<mask id="mask2"> +<use xlink:href="#image19"/> +</mask> +<image id="image18" width="76" height="71" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAABHCAIAAAAiMja/AAAABmJLR0QA/wD/AP+gvaeTAAAAJUlEQVRoge3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAqAY/gwABvwkpDgAAAABJRU5ErkJggg=="/> +<image id="image25" width="76" height="71" xlink:href="data:image/png;base64,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"/> +<mask id="mask3"> +<use xlink:href="#image25"/> +</mask> +<image id="image24" width="76" height="71" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAABHCAIAAAAiMja/AAAABmJLR0QA/wD/AP+gvaeTAAAAJUlEQVRoge3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAqAY/gwABvwkpDgAAAABJRU5ErkJggg=="/> +<image id="image31" width="76" height="71" xlink:href="data:image/png;base64,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"/> +<mask id="mask4"> +<use xlink:href="#image31"/> +</mask> +<image id="image30" width="76" height="71" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAABHCAIAAAAiMja/AAAABmJLR0QA/wD/AP+gvaeTAAAAJUlEQVRoge3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAqAY/gwABvwkpDgAAAABJRU5ErkJggg=="/> +<image id="image37" width="76" height="71" xlink:href="data:image/png;base64,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"/> +<mask id="mask5"> +<use xlink:href="#image37"/> +</mask> +<image id="image36" width="76" height="71" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAABHCAIAAAAiMja/AAAABmJLR0QA/wD/AP+gvaeTAAAAJUlEQVRoge3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAqAY/gwABvwkpDgAAAABJRU5ErkJggg=="/> +</defs> +<g id="surface1"> +<rect x="0" y="0" width="360" height="194" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<use xlink:href="#image6" mask="url(#mask0)" transform="matrix(1,0,0,1,137.5,16.5)"/> +<use xlink:href="#image12" mask="url(#mask1)" transform="matrix(1,0,0,1,214.5,102.98567)"/> +<use xlink:href="#image18" mask="url(#mask2)" transform="matrix(1,0,0,1,139,114.5)"/> +<use xlink:href="#image24" mask="url(#mask3)" transform="matrix(1,0,0,1,63.5,102.98567)"/> +<use xlink:href="#image30" mask="url(#mask4)" transform="matrix(1,0,0,1,9.5,72.44268)"/> +<use xlink:href="#image36" mask="url(#mask5)" transform="matrix(1,0,0,1,275.5,72.44269)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.09375 167.175781 C 274.636719 176.742188 274.636719 192.257812 264.09375 201.824219 C 253.546875 211.390625 236.453125 211.390625 225.90625 201.824219 C 215.363281 192.257812 215.363281 176.742188 225.90625 167.175781 C 236.453125 157.609375 253.546875 157.609375 264.09375 167.175781 " transform="matrix(1,0,0,1,-69.5,-136.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="170.998047" y="51.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 262.304688 203.929688 L 304.714844 251.542969 " transform="matrix(1,0,0,1,-69.5,-136.5)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.09375 253.660156 C 351.636719 263.230469 351.636719 278.742188 341.09375 288.308594 C 330.546875 297.878906 313.453125 297.878906 302.90625 288.308594 C 292.363281 278.742188 292.363281 263.230469 302.90625 253.660156 C 313.453125 244.09375 330.546875 244.09375 341.09375 253.660156 " transform="matrix(1,0,0,1,-69.5,-136.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="247.666992" y="137.98567"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 245.402344 209.496094 L 246.179688 257.5 " transform="matrix(1,0,0,1,-69.5,-136.5)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 265.59375 265.175781 C 276.136719 274.742188 276.136719 290.257812 265.59375 299.824219 C 255.046875 309.390625 237.953125 309.390625 227.40625 299.824219 C 216.863281 290.257812 216.863281 274.742188 227.40625 265.175781 C 237.953125 255.609375 255.046875 255.609375 265.59375 265.175781 " transform="matrix(1,0,0,1,-69.5,-136.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="172.166992" y="149.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 190.09375 253.660156 C 200.636719 263.230469 200.636719 278.742188 190.09375 288.308594 C 179.546875 297.878906 162.453125 297.878906 151.90625 288.308594 C 141.363281 278.742188 141.363281 263.230469 151.90625 253.660156 C 162.453125 244.09375 179.546875 244.09375 190.09375 253.660156 " transform="matrix(1,0,0,1,-69.5,-136.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="96.666992" y="137.98567"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 228.121094 204.238281 L 187.902344 251.265625 " transform="matrix(1,0,0,1,-69.5,-136.5)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 220.210938 195.335938 L 141.789062 229.609375 " transform="matrix(1,0,0,1,-69.5,-136.5)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 136.09375 223.117188 C 146.636719 232.6875 146.636719 248.199219 136.09375 257.765625 C 125.546875 267.335938 108.453125 267.335938 97.90625 257.765625 C 87.363281 248.199219 87.363281 232.6875 97.90625 223.117188 C 108.453125 213.550781 125.546875 213.550781 136.09375 223.117188 " transform="matrix(1,0,0,1,-69.5,-136.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="42.666992" y="107.44268"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.09375 223.117188 C 412.636719 232.6875 412.636719 248.199219 402.09375 257.765625 C 391.546875 267.335938 374.453125 267.335938 363.90625 257.765625 C 353.363281 248.199219 353.363281 232.6875 363.90625 223.117188 C 374.453125 213.550781 391.546875 213.550781 402.09375 223.117188 " transform="matrix(1,0,0,1,-69.5,-136.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="308.666992" y="107.44269"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 270.121094 194.683594 L 357.878906 230.261719 " transform="matrix(1,0,0,1,-69.5,-136.5)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="252.698" y="20"/> + <use xlink:href="#glyph1-2" x="262.55" y="20"/> + <use xlink:href="#glyph1-3" x="266.546" y="20"/> + <use xlink:href="#glyph1-2" x="269.786" y="20"/> + <use xlink:href="#glyph1-1" x="273.782" y="20"/> + <use xlink:href="#glyph1-4" x="283.634" y="20"/> + <use xlink:href="#glyph1-5" x="291.674" y="20"/> + <use xlink:href="#glyph1-6" x="300.158" y="20"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="231.98" y="38"/> + <use xlink:href="#glyph1-2" x="241.388" y="38"/> + <use xlink:href="#glyph1-3" x="245.384" y="38"/> + <use xlink:href="#glyph1-2" x="248.624" y="38"/> + <use xlink:href="#glyph1-7" x="252.62" y="38"/> + <use xlink:href="#glyph1-1" x="262.028" y="38"/> + <use xlink:href="#glyph1-8" x="271.88" y="38"/> + <use xlink:href="#glyph1-2" x="281.396" y="38"/> + <use xlink:href="#glyph1-9" x="285.392" y="38"/> + <use xlink:href="#glyph1-6" x="293.972" y="38"/> + <use xlink:href="#glyph1-10" x="301.616" y="38"/> + <use xlink:href="#glyph1-11" x="307.52" y="38"/> + <use xlink:href="#glyph1-6" x="314.972" y="38"/> + <use xlink:href="#glyph1-10" x="322.616" y="38"/> +</g> +</g> +</svg>
--- a/presen/prosym.html Thu Jan 07 10:48:05 2016 +0900 +++ b/presen/prosym.html Thu Jan 07 19:39:55 2016 +0900 @@ -5,7 +5,7 @@ <title>有線 LAN 上のPC画面配信システムTreeVNCの改良</title> <meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.3.0 (2015-12-25) [x86_64-darwin15]"> -<meta name="author" content="Tatsuki IHA" > +<meta name="author" content="Tatsuki IHA, Shinji KONO" > <!-- style sheet links --> <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection"> @@ -74,7 +74,7 @@ <tr> <td> <div align="left"> - Tatsuki IHA + Tatsuki IHA, Shinji KONO <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;"> </div> @@ -87,21 +87,72 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.3.0 (2015-12-25) [x86_64-darwin15] - on 2016-01-07 01:49:25 +0900 with Markdown engine kramdown (1.9.0) + on 2016-01-07 19:47:16 +0900 with Markdown engine kramdown (1.9.0) using options {} --> <!-- _S9SLIDE_ --> <h1 id="section">画面共有を利用したコミュニケーション</h1> -<p>授業やゼミ等で、それぞれが PC 端末を持っている場合では、PC の機能を活かした コミュニケーションが可能である。教員が操作する画面をそのまま学生に配信したり, ゼミ などで、発表する学生の画面を切り替えたりすることを可能にしたい。画面配信システム TreeVNC は参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる 仕組みを取っている。そのため, 多人数が参加しても処理性能が下がらない。また、ツリー のルートが参照している VNC サーバーを変更することで、ケーブルの差し替えなしに画面 の切替が可能となる。</p> +<ul> + <li>授業やゼミ等で、それぞれが PC 端末を持っている場合では、PC の機能を活かした コミュニケーションが可能である</li> + <li>教員が操作する画面をそのまま学生に配信したり, ゼミ などで、発表する学生の画面を切り替えたりすることを可能にする</li> + <li>画面配信システム TreeVNC は参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる 仕組みを取っている。そのため, 多人数が参加しても処理性能が下がらない</li> + <li>ツリー のルートが参照している VNC サーバーを変更することで、ケーブルの差し替えなしに画面 の切替が可能となる</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="treevnc-">TreeVNC の問題点</h1> +<ul> + <li>TreeVNC を実際に使用していく中で様々な問題が発生した。</li> + <li>琉球大学では無線と有線が別々のネットワークになっている</li> + <li>TreeVNCは単一のネットワークにしか対応できず、両方のネットワークにつながっている端末でも1つのネットワークでしか使用できなかった</li> + <li>講義等を大学外の遠隔地から受けたい場合がある</li> + <li>TreeVNC は NAT を越えた接続が行うことができない</li> +</ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-1">画面共有を利用したコミュニケーション</h1> -<p>しかし、 TreeVNC を実際に使用していく中で様々な問題が発生した。 -本研究では TreeVNC の改良として、複数のネットワークへの対応、 WAN への対応、 マルチディスプレイへの対応を行うとともに、TreeVNC 有用性を示すた めに画像データの遅延時間計測を行った。</p> +<h1 id="treevnc--1">TreeVNC の問題点</h1> +<ul> + <li>ゼミ等で発表者毎に画面切り替えを行う際、デュアルディスプレイを使っている人がいた</li> + <li>その際 VNC サーバーからはすべての画面データが送信されており、発表とは関係ない画面も配信されていた</li> +</ul> + +<p><img src="./images/multidisplay.svg" alt="message" width="400" /></p> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-1">この発表は</h1> +<ul> + <li>TreeVNC の概要 + <ul> + <li>構造</li> + <li>圧縮形式</li> + <li>TreeVNC の原理</li> + <li>画面切り替え</li> + </ul> + </li> + <li>今回の改良 + <ul> + <li>描画処理の安定化</li> + <li>複数のネットワークの対応</li> + <li>NAT を越えた通信</li> + <li>マルチディスプレイの対応</li> + </ul> + </li> + <li>TreeVNC の評価 + <ul> + <li>画像データ送信の遅延</li> + </ul> + </li> +</ul> </div> @@ -109,22 +160,12 @@ <!-- _S9SLIDE_ --> <h1 id="treevnc">TreeVNC</h1> <ul> - <li>は本研究室で開発している VNC を利用した画面配信システム</li> + <li>TreeVNC は本研究室で開発している VNC を利用した画面配信システム</li> <li>参加したクライアントをバイナリツリー状で接続することで配信コストを分散させる</li> <li>スムーズな画面の切替を行う</li> </ul> - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section-2">問題点を一枚づつ</h1> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section-3">解決した問題</h1> +<p><img src="./images/TreeVNC.svg" alt="message" width="400" /></p> </div> @@ -136,6 +177,8 @@ <li>サーバー側とクライアント側に分かれており、サーバーを起動し、クライアントがサーバーに接続を行うことで遠隔操作を可能とする</li> </ul> +<p><img src="./images/vnc.svg" alt="message" width="400" /></p> + </div> <div class='slide '> @@ -164,13 +207,12 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="treevnc-">TreeVNC の構造</h1> +<h1 id="treevnc--2">TreeVNC の構造</h1> <ul> <li>Java で作成されたTightVNC(Tight Virtual Network Computing) を元に作成されている</li> <li>クライアント同士をバイナリツリー状に接続する</li> <li>バイナリツリーのルートのノードをRoot Nodeと呼び、 Root Node に接続されるノードを Node と呼ぶ</li> - <li>Node は 親 Node から送られたデータを自分の子 Node に流す機能、 逆に子 Node から送られてきたデータを親 Nodeに流す機能がある -<img src="./images/TreeVNC.svg" alt="message" width="400" /></li> + <li>Node は 親 Node から送られたデータを自分の子 Node に流す機能、 逆に子 Node から送られてきたデータを親 Nodeに流す機能がある</li> </ul> @@ -191,7 +233,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="treevnc-1">TreeVNCの通信量</h1> +<h1 id="treevnc-1">TreeVNCの負荷分散</h1> <ul> <li>ポート一本あたりの負荷 <ul> @@ -200,51 +242,21 @@ </ul> </li> <li>従来のVNCはNode数に比例</li> - <li>TreeVNCは子供の数に関係するためNode数に関係なく一定</li> + <li>TreeVNCはNode数に関係なく一定</li> </ul> - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="treevnc--1">TreeVNC の圧縮形式</h1> -<ul> - <li>TreeVNC は ZRLEE というエンコードでデータのやり取りを行う</li> - <li>ZRLEE は ZRLE を元に生成される</li> -</ul> +<p><img src="./images/comparenormalandtree.svg" alt="message" width="400" /></p> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="zrle">ZRLE</h1> -<ul> - <li>RFB プロトコルで使えるエンコーディングタイプの1つ</li> - <li>Zlib で圧縮されたデータとそのデータのバイト数がヘッダーとして付け加えられる</li> - <li>java.util.zip.deflater で圧縮, java.util.zip.inflater で解凍が行える</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="javautilzipdeflater-">java.util.zip.deflater の問題点</h1> +<h1 id="treevnc--3">TreeVNC の圧縮形式</h1> <ul> - <li>java.util.zip.deflater は必要な辞書を書き出す事ができない</li> - <li>そのためZlibで圧縮されたデータを途中から受け取ってもデータを正しく解凍できない</li> -</ul> - -<p><img src="./images/ZRLE.svg" alt="message" width="800" /></p> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="zrlee">ZRLEE</h1> -<ul> + <li>TreeVNC は ZRLEE というエンコードでデータのやり取りを行う</li> + <li>ZRLEE は Rfb でのエンコードの1つである ZRLE を元に生成される</li> <li>ZRLEE はZRLE を一度 Root Node で解凍して再圧縮を行う</li> - <li>再圧縮の際にfinish()を入れることで初めからデータを呼んでいなくても解凍を行える</li> - <li>一度 ZRLEE に変換すれば子 Node はそのデータをそのまま流すだけで良い</li> + <li>その際配信画面の更新のたびに辞書を作りなおす</li> </ul> <p><img src="./images/ZRLEE.svg" alt="message" width="400" /></p> @@ -253,89 +265,32 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="treevnc--2">TreeVNC の通信経路</h1> -<ul> - <li>ある Node から Root Node に直接通信を行う send direct message (Node to Root)</li> - <li>Root Node からある Node に直接通信を行う send direct message (Root to Node)</li> - <li>Root Node から木の末端の Node までのすべての Node に通信を行う messeage down tree (Root to Node)</li> - <li>ある Node から木構造を上に辿って Root Node まで通信を行う message up tree (Node to Root)</li> - <li>Root Node から配信者の VNC サーバーへ の通信を行う send message (Root to VNC- Server)</li> - <li>VNC サーバーから Root Node への通信を行う send message (VNCServer to Root)</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="treevnc--3">TreeVNC に参加するまでのメッセージ通信の流れ</h1> -<table> - <tbody> - <tr> - <td><img src="./images/message.svg" alt="message" width="300" /></td> - <td> - <ul> - <li>接続を行う Node(以下 Client Node) は Multicast 通信で Root Node に対して FIND_ROOT を送信する(1:findRoot())</li> - <li>Root Node が FIND_ROOT を受信すると接続を行う Node に FIND_ROOT_REPLY を送信する (2:findRootReplay)</li> - <li>Client Node 側で、どの Root Node に接続するかを選択するパネルが表示される</li> - <li>Client Node はパネルで接続する Root Node を選択し、Root に対して接続先を要求 する WHERE_TO_CONNECT を送信する (3:whereToConnect())</li> - <li>受信した Root Node は Client Node の接続先を CONNECT_TO で送信する (4:connectTo)</li> - <li>Client Node は Root の指定した接続先に接続しに行く</li> - <li>Root Node, Client Node 間の接続が確立後 Root Node から Clinet Node に対して定期的に画像データ FRAME_BUFFER_UPDATE を送信する (5:framebufferUpdate()) - </li> - </ul> - </td> - </tr> - </tbody> -</table> +<h1 id="treevnc--4">TreeVNC に参加するまでのメッセージ通信の流れ</h1> +<p><img src="./images/message.svg" alt="message" class="center" width="400" /></p> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-4">切断時の木の再構成</h1> +<h1 id="section-2">切断時の木の再構成</h1> <ul> - <li>TreeVNC はバイナリーツリーという特性上 Node の切断を検知できずにいると、Node 同士で構成された木構造が崩れてしまい、 木構造が崩れた状態で新しい Node が接続に来た場合に適切な場所に Node を接続することができない</li> - <li>木構造のネットワークトポロジーは Root Node が持っている nodeList というリストで管理している</li> - <li>Nodeの接続が切れた場合、木の再構成を行うため nodeListを更新する必要がある</li> + <li>TreeVNC はバイナリーツリーという特性上 Node の切断を検知できずにいると、Node 同士で構成された木構造が崩れてしまう</li> + <li>TreeVNC は Node 切断の検知を LOST_CHILD というメッセージ通信で行っている</li> </ul> +<p><img src="./images/lostChild1.svg" alt="message" width="800" /></p> + </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-5">切断時の木の再構成</h1> -<ul> - <li>TreeVNC は Node 切断の検知を LOST_CHILD というメッセージ通信で行っている</li> - <li>LOST_CHILD の検出方法は MulticastQueue という画像データを蓄積するキューを利用して行う</li> - <li>子 Node は 親 の MulticastQueue から画像データを取得し、画面を描画する</li> - <li>一定時間 MulticastQueue から画像データが取得されない場合 Memory Over Flow を回避するためにTimeout スレッドが用意されている</li> - <li>Timeout を検知した際、子 Node との接続が切れたと判断し、木を再構成する</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="lostchild">LOST_CHILDの例</h1> -<ul> - <li>子 Node の切断を検知した Node が Root Node へ LOST_CHILD メッセージを送信する (1:lostChild())</li> - <li>LOST_CHILD メッセージを受け取った Root Node は nodeList の更新を行う (2:updateNodeList())</li> - <li>切断した Node を nodeList から消し、 nodeList の最後尾の Node に切断した node number を割り当てる</li> - <li>Root Node は最後尾の Node に、切断した子 Node が接続していた親 Node に接続する様 に CONNECT_TO メッセージを送信する (3:connectTo(1))</li> - <li>最後尾の Node が子 Node を失った親 Node へ 接続しに行く (4:connectToParent(1)) -<img src="./images/lostChild1.svg" alt="message" width="800" /></li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section-6">共有画面切り替え</h1> +<h1 id="section-3">共有画面切り替え</h1> <ul> <li>TreeVNC の Root Node は配信者の VNC サーバーと通信を行っている</li> - <li>画面を配信されている側のビューワにある Share Screen ボタンが押されると木をたどり、 Root Node に SERVER_CHANGE_REQUEST メッセージを送信する</li> + <li>画面を配信されている側のビューワにある Share Screen ボタンが押す</li> + <li>Root Node に SERVER_CHANGE_REQUEST メッセージを送信する</li> <li>Root Node は Share Screen ボタンを押したクライアントの VNC サーバーと通信を始める。</li> - <li>そのため TreeVNC は配信者切り替えの度にVNCを終了し、再接続する必要がない。</li> + <li>NAT を越えは現時点では実装されていない</li> </ul> @@ -360,45 +315,39 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-7">マルチディスプレイ</h1> +<h1 id="section-4">マルチディスプレイ</h1> <ul> - <li>VNC サーバーからはすべての画面データが送信されてしまっていた</li> - <li>共有したいディスプレイを選択して共有するのが望ましい</li> <li>画面切り替えの際のSERVER_CHANGE_REQUESTに共有するディスプレイの座標を付加する</li> <li>Root Node は 接続した VNC サーバーから画像データを要求する FRAME_BUFFER_UPDATE_REQUEST メッセージに受け取った座標を付加する</li> - <li>VNC サーバーは要求された座標内の画像データを FRAME_BUFFER_UPDATE メッセージで Root Node に送信する -<img src="./images/shareScreenToMultiDisplay.svg" alt="message" width="800" /></li> + <li>VNC サーバーは要求された座標内の画像データを FRAME_BUFFER_UPDATE メッセージで Root Node に送信する</li> </ul> +<p><img src="./images/shareScreenToMultiDisplay.svg" alt="message" width="800" /></p> + </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-8">複数ネットワークの対応</h1> +<h1 id="section-5">複数ネットワークの対応</h1> <ul> - <li>従来の TreeVNC はクライアントの接続する木構造が単一であった</li> - <li>Root Node が複数のネットワークに接続していても単一のネットワークでしか使用することができない</li> <li>Root Node が接続しているネットワークごとに木構造を形成する</li> - <li>Root Node は TreeManager というオブジェクトで接続部分を管理している(nodeListもそこで生成される)</li> - <li>TreeManager を保持しているネットワーク毎に生成する</li> - <li>新しい Node が接続してきた際、 interfaces から Node のネットワークと一致する TreeManager を取得し、 接続の処理を任せる -<img src="./images/MultiNetworkTree.svg" alt="message" width="800" /></li> + <li>新しい Node が接続してきた際、 interfaces から Node のネットワークと一致する木構造を取得し、 接続の処理を任せる</li> </ul> +<p><img src="./images/MultiNetworkTree.svg" alt="message" width="800" /></p> + </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="wan">WANへの対応</h1> +<h1 id="direct-connection">Direct Connection</h1> <ul> - <li>NATを超えたネットワークからの接続は直接配信側の Root Node に 接続を行うことで実現する</li> - <li>この接続を Direct Connection と呼ぶ</li> + <li>NATを越えたネットワークからの接続は直接配信側の Root Node に 接続を行うことで実現する</li> <li>Direct Connection した Node はそのネットワークの Root Node になり、そのネットワークの他の Node は Root Node に接続を行い木構造を作る</li> - <li>配信側の Root Node は Direct Connection で接続された Root Node に対して 画像データ (Framebuffer) を送信する</li> - <li>画像データを受け取った Root Node は 接続されている子 Node に対して画像データを送信する -<img src="./images/directConnection.svg" alt="message" width="800" /></li> </ul> +<p><img src="./images/directConnection.svg" alt="message" width="800" /></p> + </div> <div class='slide '> @@ -418,31 +367,9 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-9">使用するメッセージ</h1> +<h1 id="section-6">実測方法</h1> <ul> - <li>計測用のメッセージとして CHECK_DELAY , CHECK_DELAY_REPLY を追加 - <ul> - <li>CHECK_DELAY は 送信時間と画像データ - <ul> - <li>Root Node から 末端の Node に伝達する</li> - </ul> - </li> - <li>CHECK_DELAY_REPLY は画像サイズとCHECK_DELAY で受け取った送信時間 - <ul> - <li>各 Node から Root Node まで伝達する</li> - </ul> - </li> - </ul> - </li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section-10">実測方法</h1> -<ul> - <li>まず Root Node は CHECK_DELAY を 末端 Node まで各 Node を伝いながら伝達する</li> + <li>Root Node は 送信時間と画像データを持った CHECK_DELAY を 末端 Node まで各 Node を伝いながら伝達する</li> <li>CHECK_DELAY を受け取った各 Node は CHECK_DELAY_REPLY を送信する</li> <li>CHECK_DELAY_REPLY を受け取った Root Node は CHECK_DELAY の送信にどれだけ時間がかかったかの計算を行う</li> </ul> @@ -455,12 +382,23 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-11">結果</h1> +<h1 id="section-7">深さ1, 2</h1> <p><img src="./images/depth1.svg" alt="message" width="800" /> -<img src="./images/depth2.svg" alt="message" width="800" /> -<img src="./images/depth3.svg" alt="message" width="800" /> +<img src="./images/depth2.svg" alt="message" width="800" /></p> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-8">深さ3, 4</h1> +<p><img src="./images/depth3.svg" alt="message" width="800" /> <img src="./images/depth4.svg" alt="message" width="800" /></p> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-9">結果から</h1> <ul> <li>画像データの伝達はほぼ1秒以内に収まっているが、容量が小さい場合でも時間がかかる場合がある。 それはその送信の前に大容量の画像を送信した後の回線の Delay が残っているためだと考えられる</li> <li>深さ 3 で極端に遅い場合がある。 遅い原因として1つの Node がボトルネックになっている事が判明した。</li> @@ -471,14 +409,12 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-12">まとめと課題</h1> +<h1 id="section-10">まとめと課題</h1> <ul> <li>今回TreeVNCの様々な問題点の解決を行った</li> - <li> - <p>実験を行うことにより、さらなる問題点が判明した</p> - </li> - <li>実験の結果、判明した問題を解決を行う</li> - <li>WAN での 画面切り替え</li> + <li>実験を行うことによりさらなる問題点が判明した</li> + <li>実測で判明したネックになっているNodeへの対処</li> + <li>NATを越えた画面切り替え</li> <li>追加した機能の評価方法を思考し、評価を行う</li> </ul> <!-- === end markdown block === -->
--- a/presen/prosym.md Thu Jan 07 10:48:05 2016 +0900 +++ b/presen/prosym.md Thu Jan 07 19:39:55 2016 +0900 @@ -1,42 +1,55 @@ title: 有線 LAN 上のPC画面配信システムTreeVNCの改良 -author: Tatsuki IHA +author: Tatsuki IHA, Shinji KONO profile: lang: Japanese code-engine: coderay # 画面共有を利用したコミュニケーション -授業やゼミ等で、それぞれが PC 端末を持っている場合では、PC の機能を活かした コミュニケーションが可能である。教員が操作する画面をそのまま学生に配信したり, ゼミ などで、発表する学生の画面を切り替えたりすることを可能にしたい。画面配信システム TreeVNC は参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる 仕組みを取っている。そのため, 多人数が参加しても処理性能が下がらない。また、ツリー のルートが参照している VNC サーバーを変更することで、ケーブルの差し替えなしに画面 の切替が可能となる。 +- 授業やゼミ等で、それぞれが PC 端末を持っている場合では、PC の機能を活かした コミュニケーションが可能である +- 教員が操作する画面をそのまま学生に配信したり, ゼミ などで、発表する学生の画面を切り替えたりすることを可能にする +- 画面配信システム TreeVNC は参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる 仕組みを取っている。そのため, 多人数が参加しても処理性能が下がらない +- ツリー のルートが参照している VNC サーバーを変更することで、ケーブルの差し替えなしに画面 の切替が可能となる -# 画面共有を利用したコミュニケーション -しかし、 TreeVNC を実際に使用していく中で様々な問題が発生した。 -本研究では TreeVNC の改良として、複数のネットワークへの対応、 WAN への対応、 マルチディスプレイへの対応を行うとともに、TreeVNC 有用性を示すために画像データの遅延時間計測を行った。 - -# 問題:複数のネットワーク +# TreeVNC の問題点 +- TreeVNC を実際に使用していく中で様々な問題が発生した。 - 琉球大学では無線と有線が別々のネットワークになっている - TreeVNCは単一のネットワークにしか対応できず、両方のネットワークにつながっている端末でも1つのネットワークでしか使用できなかった +- 講義等を大学外の遠隔地から受けたい場合がある +- TreeVNC は NAT を越えた接続が行うことができない -# 問題:マルチディスプレイ +# TreeVNC の問題点 - ゼミ等で発表者毎に画面切り替えを行う際、デュアルディスプレイを使っている人がいた - その際 VNC サーバーからはすべての画面データが送信されており、発表とは関係ない画面も配信されていた -# 問題:WANへの対応 -- 講義等を大学外の遠隔地から受けたい場合がある -- TreeVNC は NAT を超えた接続が行うことができない +<img src="./images/multidisplay.svg" alt="message" width="400"> # この発表は - TreeVNC の概要 + - 構造 + - 圧縮形式 + - TreeVNC の原理 + - 画面切り替え - 今回の改良 + - 描画処理の安定化 + - 複数のネットワークの対応 + - NAT を越えた通信 + - マルチディスプレイの対応 - TreeVNC の評価 + - 画像データ送信の遅延 # TreeVNC - TreeVNC は本研究室で開発している VNC を利用した画面配信システム - 参加したクライアントをバイナリツリー状で接続することで配信コストを分散させる - スムーズな画面の切替を行う +<img src="./images/TreeVNC.svg" alt="message" width="400"> + # VNC - VNC(Virtual Network Computing) は RFBプロトコルを用いて遠隔操作を行うソフトウェア - サーバー側とクライアント側に分かれており、サーバーを起動し、クライアントがサーバーに接続を行うことで遠隔操作を可能とする +<img src="./images/vnc.svg" alt="message" width="400"> + # RFB プロトコル - RFB(Remote Frame Buffer)プロトコルは VNC で用いられているプロトコル - 自身の画面をネットワーク越しに他者の画面に表示する @@ -54,96 +67,44 @@ - クライアント同士をバイナリツリー状に接続する - バイナリツリーのルートのノードをRoot Nodeと呼び、 Root Node に接続されるノードを Node と呼ぶ - Node は 親 Node から送られたデータを自分の子 Node に流す機能、 逆に子 Node から送られてきたデータを親 Nodeに流す機能がある -<img src="./images/TreeVNC.svg" alt="message" width="400"> # Root Node - Root Node は 子 Nodeにデータを流す機能に加え - 各 Node の管理 - VNC サーバーから送信されたFramebuffer の管理を行う -# TreeVNCの通信量 +# TreeVNCの負荷分散 - ポート一本あたりの負荷 - 従来のVNC : Node数 * データ量 - TreeVNC : (2(子供の数) + 1) * データ量 - 従来のVNCはNode数に比例 -- TreeVNCは子供の数に関係するためNode数に関係なく一定 +- TreeVNCはNode数に関係なく一定 + +<img src="./images/comparenormalandtree.svg" alt="message" width="400"> # TreeVNC の圧縮形式 -- TreeVNC は ZRLEE というエンコードでデータのやり取りを行う -- ZRLEE は ZRLE を元に生成される - -# ZRLE -- RFB プロトコルで使えるエンコーディングタイプの1つ -- Zlib で圧縮されたデータとそのデータのバイト数がヘッダーとして付け加えられる -- java.util.zip.deflater で圧縮, java.util.zip.inflater で解凍が行える - -# java.util.zip.deflater の問題点 -- java.util.zip.deflater は必要な辞書を書き出す事ができない -- そのためZlibで圧縮されたデータを途中から受け取ってもデータを正しく解凍できない - -<img src="./images/ZRLE.svg" alt="message" width="800"> - -# ZRLEE -- ZRLEE はZRLE を一度 Root Node で解凍して再圧縮を行う -- 再圧縮の際にfinish()を入れることで初めからデータを呼んでいなくても解凍を行える -- 一度 ZRLEE に変換すれば子 Node はそのデータをそのまま流すだけで良い +- TreeVNC は ZRLEE というエンコードでデータのやり取りを行う +- ZRLEE は Rfb でのエンコードの1つである ZRLE を元に生成される +- ZRLEE はZRLE を一度 Root Node で解凍して再圧縮を行う +- その際配信画面の更新のたびに辞書を作りなおす <img src="./images/ZRLEE.svg" alt="message" width="400"> -# TreeVNC の通信経路 -- ある Node から Root Node に直接通信を行う send direct message (Node to Root) -- Root Node からある Node に直接通信を行う send direct message (Root to Node) -- Root Node から木の末端の Node までのすべての Node に通信を行う messeage down tree (Root to Node) -- ある Node から木構造を上に辿って Root Node まで通信を行う message up tree (Node to Root) -- Root Node から配信者の VNC サーバーへ の通信を行う send message (Root to VNC- Server) -- VNC サーバーから Root Node への通信を行う send message (VNCServer to Root) - # TreeVNC に参加するまでのメッセージ通信の流れ -<table> - <tbody> - <tr> - <td><img src="./images/message.svg" alt="message" width="300"/></td> - <td> - <ul> - <li>接続を行う Node(以下 Client Node) は Multicast 通信で Root Node に対して FIND_ROOT を送信する(1:findRoot())</li> - <li>Root Node が FIND_ROOT を受信すると接続を行う Node に FIND_ROOT_REPLY を送信する (2:findRootReplay)</li> - <li>Client Node 側で、どの Root Node に接続するかを選択するパネルが表示される</li> - <li>Client Node はパネルで接続する Root Node を選択し、Root に対して接続先を要求 する WHERE_TO_CONNECT を送信する (3:whereToConnect())</li> - <li>受信した Root Node は Client Node の接続先を CONNECT_TO で送信する (4:connectTo)</li> - <li>Client Node は Root の指定した接続先に接続しに行く</li> - <li>Root Node, Client Node 間の接続が確立後 Root Node から Clinet Node に対して定期的に画像データ FRAME_BUFFER_UPDATE を送信する (5:framebufferUpdate()) - </li> - </ul> - </td> - </tr> - </tbody> -</table> +<img src="./images/message.svg" alt="message" class="center" width="400"/> # 切断時の木の再構成 -- TreeVNC はバイナリーツリーという特性上 Node の切断を検知できずにいると、Node 同士で構成された木構造が崩れてしまい、 木構造が崩れた状態で新しい Node が接続に来た場合に適切な場所に Node を接続することができない -- 木構造のネットワークトポロジーは Root Node が持っている nodeList というリストで管理している -- Nodeの接続が切れた場合、木の再構成を行うため nodeListを更新する必要がある - -# 切断時の木の再構成 +- TreeVNC はバイナリーツリーという特性上 Node の切断を検知できずにいると、Node 同士で構成された木構造が崩れてしまう - TreeVNC は Node 切断の検知を LOST\_CHILD というメッセージ通信で行っている -- LOST\_CHILD の検出方法は MulticastQueue という画像データを蓄積するキューを利用して行う -- 子 Node は 親 の MulticastQueue から画像データを取得し、画面を描画する -- 一定時間 MulticastQueue から画像データが取得されない場合 Memory Over Flow を回避するためにTimeout スレッドが用意されている -- Timeout を検知した際、子 Node との接続が切れたと判断し、木を再構成する -# LOST_CHILDの例 -- 子 Node の切断を検知した Node が Root Node へ LOST\_CHILD メッセージを送信する (1:lostChild()) -- LOST\_CHILD メッセージを受け取った Root Node は nodeList の更新を行う (2:updateNodeList()) -- 切断した Node を nodeList から消し、 nodeList の最後尾の Node に切断した node number を割り当てる -- Root Node は最後尾の Node に、切断した子 Node が接続していた親 Node に接続する様 に CONNECT\_TO メッセージを送信する (3:connectTo(1)) -- 最後尾の Node が子 Node を失った親 Node へ 接続しに行く (4:connectToParent(1)) <img src="./images/lostChild1.svg" alt="message" width="800"> # 共有画面切り替え - TreeVNC の Root Node は配信者の VNC サーバーと通信を行っている -- 画面を配信されている側のビューワにある Share Screen ボタンが押されると木をたどり、 Root Node に SERVER\_CHANGE\_REQUEST メッセージを送信する +- 画面を配信されている側のビューワにある Share Screen ボタンが押す +- Root Node に SERVER\_CHANGE\_REQUEST メッセージを送信する - Root Node は Share Screen ボタンを押したクライアントの VNC サーバーと通信を始める。 -- そのため TreeVNC は配信者切り替えの度にVNCを終了し、再接続する必要がない。 +- NAT を越えは現時点では実装されていない # QUALITY モードと SPEED モード - 高解像度のデータの描画処理はPCのスペックによって重くなる場合がある @@ -155,28 +116,22 @@ - これにより描画処理の遅延が解決できると思われる # マルチディスプレイ -- VNC サーバーからはすべての画面データが送信されてしまっていた -- 共有したいディスプレイを選択して共有するのが望ましい - 画面切り替えの際のSERVER\_CHANGE\_REQUESTに共有するディスプレイの座標を付加する - Root Node は 接続した VNC サーバーから画像データを要求する FRAME\_BUFFER\_UPDATE\_REQUEST メッセージに受け取った座標を付加する - VNC サーバーは要求された座標内の画像データを FRAME\_BUFFER\_UPDATE メッセージで Root Node に送信する + <img src="./images/shareScreenToMultiDisplay.svg" alt="message" width="800"> # 複数ネットワークの対応 -- 従来の TreeVNC はクライアントの接続する木構造が単一であった -- Root Node が複数のネットワークに接続していても単一のネットワークでしか使用することができない - Root Node が接続しているネットワークごとに木構造を形成する -- Root Node は TreeManager というオブジェクトで接続部分を管理している(nodeListもそこで生成される) -- TreeManager を保持しているネットワーク毎に生成する -- 新しい Node が接続してきた際、 interfaces から Node のネットワークと一致する TreeManager を取得し、 接続の処理を任せる +- 新しい Node が接続してきた際、 interfaces から Node のネットワークと一致する木構造を取得し、 接続の処理を任せる + <img src="./images/MultiNetworkTree.svg" alt="message" width="800"> -# WANへの対応 -- NATを超えたネットワークからの接続は直接配信側の Root Node に 接続を行うことで実現する -- この接続を Direct Connection と呼ぶ +# Direct Connection +- NATを越えたネットワークからの接続は直接配信側の Root Node に 接続を行うことで実現する - Direct Connection した Node はそのネットワークの Root Node になり、そのネットワークの他の Node は Root Node に接続を行い木構造を作る -- 配信側の Root Node は Direct Connection で接続された Root Node に対して 画像データ (Framebuffer) を送信する -- 画像データを受け取った Root Node は 接続されている子 Node に対して画像データを送信する + <img src="./images/directConnection.svg" alt="message" width="800"> # TreeVNCの評価 @@ -185,15 +140,8 @@ - 実際に講義を受講している学生が TreeVNC を使用 - 約20名の接続 -# 使用するメッセージ -- 計測用のメッセージとして CHECK\_DELAY , CHECK\_DELAY\_REPLY を追加 - - CHECK\_DELAY は 送信時間と画像データ - - Root Node から 末端の Node に伝達する - - CHECK\_DELAY_REPLY は画像サイズとCHECK\_DELAY で受け取った送信時間 - - 各 Node から Root Node まで伝達する - # 実測方法 -- まず Root Node は CHECK\_DELAY を 末端 Node まで各 Node を伝いながら伝達する +- Root Node は 送信時間と画像データを持った CHECK\_DELAY を 末端 Node まで各 Node を伝いながら伝達する - CHECK\_DELAY を受け取った各 Node は CHECK\_DELAY\_REPLY を送信する - CHECK\_DELAY\_REPLY を受け取った Root Node は CHECK\_DELAY の送信にどれだけ時間がかかったかの計算を行う @@ -202,20 +150,22 @@ Long delay = System.currentTimeMillis() - time; ``` -# 結果 +# 深さ1, 2 <img src="./images/depth1.svg" alt="message" width="800"> <img src="./images/depth2.svg" alt="message" width="800"> + +# 深さ3, 4 <img src="./images/depth3.svg" alt="message" width="800"> <img src="./images/depth4.svg" alt="message" width="800"> +# 結果から - 画像データの伝達はほぼ1秒以内に収まっているが、容量が小さい場合でも時間がかかる場合がある。 それはその送信の前に大容量の画像を送信した後の回線の Delay が残っているためだと考えられる - 深さ 3 で極端に遅い場合がある。 遅い原因として1つの Node がボトルネックになっている事が判明した。 - ネックになった Node をそのままにするとその子Nodeに影響を及ぼしてしまう。 そのためその Node に何らかの対応を行う必要がある # まとめと課題 - 今回TreeVNCの様々な問題点の解決を行った -- 実験を行うことにより、さらなる問題点が判明した - +- 実験を行うことによりさらなる問題点が判明した - 実測で判明したネックになっているNodeへの対処 -- WAN での 画面切り替え +- NATを越えた画面切り替え - 追加した機能の評価方法を思考し、評価を行う