Last active
December 19, 2015 12:29
-
-
Save ffunenga/5955574 to your computer and use it in GitHub Desktop.
Identification of implicit element as a search problem
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="522pt" height="256pt" viewBox="0 0 522 256" version="1.1"> | |
<defs> | |
<g> | |
<symbol overflow="visible" id="glyph0-0"> | |
<path style="stroke:none;" d="M 6.046875 -10.625 C 5.441406 -9.582031 4.988281 -8.542969 4.6875 -7.515625 C 4.394531 -6.484375 4.25 -5.441406 4.25 -4.390625 C 4.25 -3.347656 4.394531 -2.304688 4.6875 -1.265625 C 4.988281 -0.234375 5.441406 0.800781 6.046875 1.84375 L 4.953125 1.84375 C 4.265625 0.757812 3.746094 -0.289062 3.40625 -1.3125 C 3.070312 -2.339844 2.90625 -3.367188 2.90625 -4.390625 C 2.90625 -5.410156 3.070312 -6.4375 3.40625 -7.46875 C 3.746094 -8.496094 4.265625 -9.550781 4.953125 -10.625 Z M 6.046875 -10.625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-1"> | |
<path style="stroke:none;" d="M 3.171875 -10.640625 L 6.0625 -10.640625 L 6.0625 -9.65625 L 4.421875 -9.65625 L 4.421875 0.875 L 6.0625 0.875 L 6.0625 1.84375 L 3.171875 1.84375 Z M 3.171875 -10.640625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-2"> | |
<path style="stroke:none;" d="M 7.828125 -6.5625 L 2.015625 -4.375 L 7.828125 -2.21875 L 7.828125 -0.96875 L 0.609375 -3.828125 L 0.609375 -4.953125 L 7.828125 -7.8125 Z M 7.828125 -6.5625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-3"> | |
<path style="stroke:none;" d="M 7.265625 -10.640625 L 7.265625 -9.59375 L 5.84375 -9.59375 C 5.382812 -9.59375 5.066406 -9.496094 4.890625 -9.3125 C 4.722656 -9.125 4.640625 -8.792969 4.640625 -8.328125 L 4.640625 -7.65625 L 7.265625 -7.65625 L 7.265625 -6.671875 L 4.640625 -6.671875 L 4.640625 0 L 3.375 0 L 3.375 -6.671875 L 1.328125 -6.671875 L 1.328125 -7.65625 L 3.375 -7.65625 L 3.375 -8.1875 C 3.375 -9.027344 3.566406 -9.648438 3.953125 -10.046875 C 4.335938 -10.441406 4.9375 -10.640625 5.75 -10.640625 Z M 7.265625 -10.640625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-4"> | |
<path style="stroke:none;" d="M 1.75 -7.65625 L 4.96875 -7.65625 L 4.96875 -0.984375 L 7.46875 -0.984375 L 7.46875 0 L 1.21875 0 L 1.21875 -0.984375 L 3.71875 -0.984375 L 3.71875 -6.671875 L 1.75 -6.671875 Z M 3.71875 -10.640625 L 4.96875 -10.640625 L 4.96875 -9.046875 L 3.71875 -9.046875 Z M 3.71875 -10.640625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-5"> | |
<path style="stroke:none;" d="M 4.375 -2.78125 C 4.375 -2.207031 4.472656 -1.773438 4.671875 -1.484375 C 4.878906 -1.203125 5.1875 -1.0625 5.59375 -1.0625 L 7.0625 -1.0625 L 7.0625 0 L 5.46875 0 C 4.71875 0 4.132812 -0.238281 3.71875 -0.71875 C 3.3125 -1.207031 3.109375 -1.894531 3.109375 -2.78125 L 3.109375 -9.734375 L 1.09375 -9.734375 L 1.09375 -10.71875 L 4.375 -10.71875 Z M 4.375 -2.78125 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-6"> | |
<path style="stroke:none;" d="M 7.609375 -4.140625 L 7.609375 -3.53125 L 2.15625 -3.53125 L 2.15625 -3.484375 C 2.15625 -2.648438 2.367188 -2.003906 2.796875 -1.546875 C 3.230469 -1.097656 3.851562 -0.875 4.65625 -0.875 C 5.050781 -0.875 5.46875 -0.9375 5.90625 -1.0625 C 6.339844 -1.183594 6.8125 -1.378906 7.3125 -1.640625 L 7.3125 -0.390625 C 6.832031 -0.191406 6.367188 -0.0429688 5.921875 0.046875 C 5.472656 0.148438 5.042969 0.203125 4.640625 0.203125 C 3.441406 0.203125 2.507812 -0.148438 1.84375 -0.859375 C 1.175781 -1.574219 0.84375 -2.566406 0.84375 -3.828125 C 0.84375 -5.042969 1.171875 -6.019531 1.828125 -6.75 C 2.480469 -7.476562 3.359375 -7.84375 4.453125 -7.84375 C 5.417969 -7.84375 6.1875 -7.507812 6.75 -6.84375 C 7.320312 -6.1875 7.609375 -5.285156 7.609375 -4.140625 Z M 6.34375 -4.515625 C 6.320312 -5.253906 6.144531 -5.816406 5.8125 -6.203125 C 5.488281 -6.585938 5.011719 -6.78125 4.390625 -6.78125 C 3.785156 -6.78125 3.285156 -6.574219 2.890625 -6.171875 C 2.503906 -5.773438 2.273438 -5.214844 2.203125 -4.5 Z M 6.34375 -4.515625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-7"> | |
<path style="stroke:none;" d="M 0.609375 -6.5625 L 0.609375 -7.8125 L 7.828125 -4.953125 L 7.828125 -3.828125 L 0.609375 -0.96875 L 0.609375 -2.21875 L 6.40625 -4.375 Z M 0.609375 -6.5625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-8"> | |
<path style="stroke:none;" d=""/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-9"> | |
<path style="stroke:none;" d="M 4.203125 -9.828125 L 4.203125 -7.65625 L 7.0625 -7.65625 L 7.0625 -6.671875 L 4.203125 -6.671875 L 4.203125 -2.515625 C 4.203125 -1.953125 4.304688 -1.554688 4.515625 -1.328125 C 4.730469 -1.109375 5.109375 -1 5.640625 -1 L 7.0625 -1 L 7.0625 0 L 5.515625 0 C 4.578125 0 3.910156 -0.1875 3.515625 -0.5625 C 3.128906 -0.945312 2.9375 -1.597656 2.9375 -2.515625 L 2.9375 -6.671875 L 0.890625 -6.671875 L 0.890625 -7.65625 L 2.9375 -7.65625 L 2.9375 -9.828125 Z M 4.203125 -9.828125 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-10"> | |
<path style="stroke:none;" d="M 4.625 -6.875 C 4.777344 -7.207031 4.976562 -7.453125 5.21875 -7.609375 C 5.457031 -7.761719 5.742188 -7.84375 6.078125 -7.84375 C 6.691406 -7.84375 7.125 -7.601562 7.375 -7.125 C 7.632812 -6.644531 7.765625 -5.746094 7.765625 -4.4375 L 7.765625 0 L 6.609375 0 L 6.609375 -4.375 C 6.609375 -5.457031 6.542969 -6.128906 6.421875 -6.390625 C 6.304688 -6.648438 6.085938 -6.78125 5.765625 -6.78125 C 5.398438 -6.78125 5.148438 -6.636719 5.015625 -6.359375 C 4.878906 -6.085938 4.8125 -5.425781 4.8125 -4.375 L 4.8125 0 L 3.671875 0 L 3.671875 -4.375 C 3.671875 -5.464844 3.601562 -6.140625 3.46875 -6.390625 C 3.34375 -6.648438 3.113281 -6.78125 2.78125 -6.78125 C 2.445312 -6.78125 2.210938 -6.636719 2.078125 -6.359375 C 1.953125 -6.085938 1.890625 -5.425781 1.890625 -4.375 L 1.890625 0 L 0.75 0 L 0.75 -7.65625 L 1.890625 -7.65625 L 1.890625 -7 C 2.035156 -7.269531 2.222656 -7.476562 2.453125 -7.625 C 2.679688 -7.769531 2.9375 -7.84375 3.21875 -7.84375 C 3.558594 -7.84375 3.847656 -7.757812 4.078125 -7.59375 C 4.316406 -7.4375 4.5 -7.195312 4.625 -6.875 Z M 4.625 -6.875 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-11"> | |
<path style="stroke:none;" d="M 2.5625 -0.96875 L 2.5625 2.90625 L 1.296875 2.90625 L 1.296875 -7.65625 L 2.5625 -7.65625 L 2.5625 -6.671875 C 2.769531 -7.054688 3.046875 -7.347656 3.390625 -7.546875 C 3.742188 -7.742188 4.148438 -7.84375 4.609375 -7.84375 C 5.535156 -7.84375 6.257812 -7.480469 6.78125 -6.765625 C 7.308594 -6.046875 7.578125 -5.054688 7.578125 -3.796875 C 7.578125 -2.546875 7.308594 -1.566406 6.78125 -0.859375 C 6.25 -0.148438 5.523438 0.203125 4.609375 0.203125 C 4.140625 0.203125 3.726562 0.101562 3.375 -0.09375 C 3.03125 -0.289062 2.757812 -0.582031 2.5625 -0.96875 Z M 6.25 -3.828125 C 6.25 -4.792969 6.089844 -5.53125 5.78125 -6.03125 C 5.476562 -6.527344 5.023438 -6.78125 4.421875 -6.78125 C 3.804688 -6.78125 3.339844 -6.527344 3.03125 -6.03125 C 2.71875 -5.53125 2.5625 -4.792969 2.5625 -3.828125 C 2.5625 -2.859375 2.71875 -2.121094 3.03125 -1.625 C 3.339844 -1.125 3.804688 -0.875 4.421875 -0.875 C 5.023438 -0.875 5.476562 -1.117188 5.78125 -1.609375 C 6.089844 -2.105469 6.25 -2.847656 6.25 -3.828125 Z M 6.25 -3.828125 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-12"> | |
<path style="stroke:none;" d="M 4.796875 -3.84375 L 4.375 -3.84375 C 3.644531 -3.84375 3.089844 -3.710938 2.71875 -3.453125 C 2.351562 -3.203125 2.171875 -2.820312 2.171875 -2.3125 C 2.171875 -1.851562 2.304688 -1.492188 2.578125 -1.234375 C 2.855469 -0.984375 3.242188 -0.859375 3.734375 -0.859375 C 4.429688 -0.859375 4.976562 -1.097656 5.375 -1.578125 C 5.769531 -2.054688 5.96875 -2.71875 5.96875 -3.5625 L 5.96875 -3.84375 Z M 7.234375 -4.375 L 7.234375 0 L 5.96875 0 L 5.96875 -1.140625 C 5.707031 -0.679688 5.367188 -0.339844 4.953125 -0.125 C 4.546875 0.0898438 4.050781 0.203125 3.46875 0.203125 C 2.6875 0.203125 2.058594 -0.015625 1.59375 -0.453125 C 1.132812 -0.898438 0.90625 -1.492188 0.90625 -2.234375 C 0.90625 -3.074219 1.191406 -3.71875 1.765625 -4.15625 C 2.335938 -4.601562 3.175781 -4.828125 4.28125 -4.828125 L 5.96875 -4.828125 L 5.96875 -5.03125 C 5.96875 -5.644531 5.808594 -6.085938 5.5 -6.359375 C 5.195312 -6.636719 4.710938 -6.78125 4.046875 -6.78125 C 3.617188 -6.78125 3.183594 -6.714844 2.75 -6.59375 C 2.3125 -6.46875 1.882812 -6.285156 1.46875 -6.046875 L 1.46875 -7.3125 C 1.933594 -7.488281 2.382812 -7.617188 2.8125 -7.703125 C 3.238281 -7.792969 3.648438 -7.84375 4.046875 -7.84375 C 4.679688 -7.84375 5.222656 -7.746094 5.671875 -7.5625 C 6.117188 -7.375 6.484375 -7.089844 6.765625 -6.71875 C 6.929688 -6.488281 7.050781 -6.207031 7.125 -5.875 C 7.195312 -5.539062 7.234375 -5.039062 7.234375 -4.375 Z M 7.234375 -4.375 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-13"> | |
<path style="stroke:none;" d="M 5.265625 -10.640625 L 5.265625 1.84375 L 2.359375 1.84375 L 2.359375 0.875 L 4 0.875 L 4 -9.65625 L 2.359375 -9.65625 L 2.359375 -10.640625 Z M 5.265625 -10.640625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-14"> | |
<path style="stroke:none;" d="M 1.328125 -2.90625 L 1.328125 -7.640625 L 2.59375 -7.640625 L 2.59375 -2.90625 C 2.59375 -2.207031 2.710938 -1.695312 2.953125 -1.375 C 3.199219 -1.050781 3.582031 -0.890625 4.09375 -0.890625 C 4.683594 -0.890625 5.140625 -1.097656 5.453125 -1.515625 C 5.761719 -1.929688 5.921875 -2.53125 5.921875 -3.3125 L 5.921875 -7.640625 L 7.1875 -7.640625 L 7.1875 0 L 5.921875 0 L 5.921875 -1.15625 C 5.691406 -0.707031 5.382812 -0.367188 5 -0.140625 C 4.625 0.0859375 4.175781 0.203125 3.65625 0.203125 C 2.875 0.203125 2.289062 -0.0507812 1.90625 -0.5625 C 1.519531 -1.082031 1.328125 -1.863281 1.328125 -2.90625 Z M 1.328125 -2.90625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-15"> | |
<path style="stroke:none;" d="M 5.859375 -6.671875 L 5.859375 -10.640625 L 7.125 -10.640625 L 7.125 0 L 5.859375 0 L 5.859375 -0.96875 C 5.648438 -0.582031 5.367188 -0.289062 5.015625 -0.09375 C 4.671875 0.101562 4.273438 0.203125 3.828125 0.203125 C 2.898438 0.203125 2.167969 -0.15625 1.640625 -0.875 C 1.109375 -1.589844 0.84375 -2.582031 0.84375 -3.84375 C 0.84375 -5.089844 1.109375 -6.070312 1.640625 -6.78125 C 2.167969 -7.488281 2.898438 -7.84375 3.828125 -7.84375 C 4.285156 -7.84375 4.6875 -7.742188 5.03125 -7.546875 C 5.382812 -7.347656 5.660156 -7.054688 5.859375 -6.671875 Z M 2.171875 -3.828125 C 2.171875 -2.847656 2.320312 -2.105469 2.625 -1.609375 C 2.933594 -1.117188 3.394531 -0.875 4 -0.875 C 4.613281 -0.875 5.078125 -1.125 5.390625 -1.625 C 5.699219 -2.121094 5.859375 -2.859375 5.859375 -3.828125 C 5.859375 -4.792969 5.699219 -5.53125 5.390625 -6.03125 C 5.078125 -6.527344 4.613281 -6.78125 4 -6.78125 C 3.394531 -6.78125 2.933594 -6.527344 2.625 -6.03125 C 2.320312 -5.53125 2.171875 -4.792969 2.171875 -3.828125 Z M 2.171875 -3.828125 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-16"> | |
<path style="stroke:none;" d="M 2.375 -10.625 L 3.46875 -10.625 C 4.152344 -9.550781 4.664062 -8.496094 5 -7.46875 C 5.339844 -6.4375 5.515625 -5.410156 5.515625 -4.390625 C 5.515625 -3.367188 5.339844 -2.339844 5 -1.3125 C 4.664062 -0.28125 4.152344 0.769531 3.46875 1.84375 L 2.375 1.84375 C 2.976562 0.789062 3.429688 -0.25 3.734375 -1.28125 C 4.035156 -2.320312 4.1875 -3.359375 4.1875 -4.390625 C 4.1875 -5.429688 4.035156 -6.46875 3.734375 -7.5 C 3.429688 -8.539062 2.976562 -9.582031 2.375 -10.625 Z M 2.375 -10.625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-17"> | |
<path style="stroke:none;" d="M 0.953125 -10.203125 L 2.703125 -10.203125 L 6.140625 -1.8125 L 6.140625 -10.203125 L 7.484375 -10.203125 L 7.484375 0 L 5.734375 0 L 2.28125 -8.40625 L 2.28125 0 L 0.953125 0 Z M 0.953125 -10.203125 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-18"> | |
<path style="stroke:none;" d="M 4.21875 -6.78125 C 3.570312 -6.78125 3.082031 -6.527344 2.75 -6.03125 C 2.425781 -5.53125 2.265625 -4.792969 2.265625 -3.828125 C 2.265625 -2.847656 2.425781 -2.105469 2.75 -1.609375 C 3.082031 -1.117188 3.570312 -0.875 4.21875 -0.875 C 4.851562 -0.875 5.332031 -1.117188 5.65625 -1.609375 C 5.988281 -2.105469 6.15625 -2.847656 6.15625 -3.828125 C 6.15625 -4.792969 5.988281 -5.53125 5.65625 -6.03125 C 5.332031 -6.527344 4.851562 -6.78125 4.21875 -6.78125 Z M 4.21875 -7.84375 C 5.269531 -7.84375 6.078125 -7.496094 6.640625 -6.8125 C 7.210938 -6.125 7.5 -5.128906 7.5 -3.828125 C 7.5 -2.515625 7.214844 -1.511719 6.65625 -0.828125 C 6.09375 -0.140625 5.277344 0.203125 4.21875 0.203125 C 3.15625 0.203125 2.339844 -0.140625 1.78125 -0.828125 C 1.21875 -1.511719 0.9375 -2.515625 0.9375 -3.828125 C 0.9375 -5.128906 1.21875 -6.125 1.78125 -6.8125 C 2.339844 -7.496094 3.15625 -7.84375 4.21875 -7.84375 Z M 4.21875 -7.84375 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-19"> | |
<path style="stroke:none;" d="M 3.296875 -5.125 C 3.296875 -5.371094 3.382812 -5.585938 3.5625 -5.765625 C 3.738281 -5.949219 3.953125 -6.046875 4.203125 -6.046875 C 4.449219 -6.046875 4.664062 -5.949219 4.84375 -5.765625 C 5.027344 -5.585938 5.125 -5.371094 5.125 -5.125 C 5.125 -4.875 5.035156 -4.660156 4.859375 -4.484375 C 4.679688 -4.304688 4.460938 -4.21875 4.203125 -4.21875 C 3.941406 -4.21875 3.722656 -4.300781 3.546875 -4.46875 C 3.378906 -4.644531 3.296875 -4.863281 3.296875 -5.125 Z M 4.21875 -9.296875 C 3.570312 -9.296875 3.085938 -8.945312 2.765625 -8.25 C 2.453125 -7.5625 2.296875 -6.507812 2.296875 -5.09375 C 2.296875 -3.675781 2.453125 -2.617188 2.765625 -1.921875 C 3.085938 -1.234375 3.570312 -0.890625 4.21875 -0.890625 C 4.863281 -0.890625 5.34375 -1.234375 5.65625 -1.921875 C 5.964844 -2.617188 6.125 -3.675781 6.125 -5.09375 C 6.125 -6.507812 5.964844 -7.5625 5.65625 -8.25 C 5.34375 -8.945312 4.863281 -9.296875 4.21875 -9.296875 Z M 4.21875 -10.390625 C 5.300781 -10.390625 6.117188 -9.941406 6.671875 -9.046875 C 7.230469 -8.160156 7.515625 -6.839844 7.515625 -5.09375 C 7.515625 -3.351562 7.230469 -2.035156 6.671875 -1.140625 C 6.117188 -0.242188 5.300781 0.203125 4.21875 0.203125 C 3.125 0.203125 2.292969 -0.242188 1.734375 -1.140625 C 1.179688 -2.035156 0.90625 -3.351562 0.90625 -5.09375 C 0.90625 -6.839844 1.179688 -8.160156 1.734375 -9.046875 C 2.292969 -9.941406 3.125 -10.390625 4.21875 -10.390625 Z M 4.21875 -10.390625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-20"> | |
<path style="stroke:none;" d="M 1.84375 -1.15625 L 4 -1.15625 L 4 -8.96875 L 1.6875 -8.4375 L 1.6875 -9.703125 L 3.984375 -10.203125 L 5.359375 -10.203125 L 5.359375 -1.15625 L 7.484375 -1.15625 L 7.484375 0 L 1.84375 0 Z M 1.84375 -1.15625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-21"> | |
<path style="stroke:none;" d="M 5.03125 -8.953125 L 1.8125 -3.5625 L 5.03125 -3.5625 Z M 4.796875 -10.203125 L 6.40625 -10.203125 L 6.40625 -3.5625 L 7.765625 -3.5625 L 7.765625 -2.4375 L 6.40625 -2.4375 L 6.40625 0 L 5.03125 0 L 5.03125 -2.4375 L 0.703125 -2.4375 L 0.703125 -3.734375 Z M 4.796875 -10.203125 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-22"> | |
<path style="stroke:none;" d="M 2.546875 -1.15625 L 7.234375 -1.15625 L 7.234375 0 L 1.046875 0 L 1.046875 -1.15625 C 1.886719 -2.058594 2.628906 -2.859375 3.265625 -3.546875 C 3.910156 -4.230469 4.351562 -4.71875 4.59375 -5 C 5.050781 -5.550781 5.359375 -6 5.515625 -6.34375 C 5.667969 -6.683594 5.75 -7.039062 5.75 -7.40625 C 5.75 -7.976562 5.582031 -8.425781 5.25 -8.75 C 4.914062 -9.070312 4.457031 -9.234375 3.875 -9.234375 C 3.457031 -9.234375 3.019531 -9.152344 2.5625 -9 C 2.113281 -8.851562 1.632812 -8.621094 1.125 -8.3125 L 1.125 -9.71875 C 1.589844 -9.933594 2.050781 -10.101562 2.5 -10.21875 C 2.957031 -10.332031 3.40625 -10.390625 3.84375 -10.390625 C 4.839844 -10.390625 5.644531 -10.121094 6.25 -9.59375 C 6.863281 -9.0625 7.171875 -8.363281 7.171875 -7.5 C 7.171875 -7.0625 7.066406 -6.621094 6.859375 -6.1875 C 6.660156 -5.75 6.332031 -5.269531 5.875 -4.75 C 5.625 -4.445312 5.253906 -4.035156 4.765625 -3.515625 C 4.285156 -2.992188 3.542969 -2.207031 2.546875 -1.15625 Z M 2.546875 -1.15625 "/> | |
</symbol> | |
<symbol overflow="visible" id="glyph0-23"> | |
<path style="stroke:none;" d="M 5.3125 -5.46875 C 5.976562 -5.289062 6.488281 -4.972656 6.84375 -4.515625 C 7.195312 -4.054688 7.375 -3.488281 7.375 -2.8125 C 7.375 -1.875 7.054688 -1.132812 6.421875 -0.59375 C 5.796875 -0.0625 4.925781 0.203125 3.8125 0.203125 C 3.34375 0.203125 2.863281 0.152344 2.375 0.0625 C 1.882812 -0.0195312 1.402344 -0.144531 0.9375 -0.3125 L 0.9375 -1.6875 C 1.402344 -1.4375 1.863281 -1.253906 2.3125 -1.140625 C 2.757812 -1.023438 3.207031 -0.96875 3.65625 -0.96875 C 4.414062 -0.96875 5 -1.132812 5.40625 -1.46875 C 5.808594 -1.808594 6.015625 -2.304688 6.015625 -2.953125 C 6.015625 -3.542969 5.808594 -4.015625 5.40625 -4.359375 C 5 -4.710938 4.445312 -4.890625 3.75 -4.890625 L 2.703125 -4.890625 L 2.703125 -6.015625 L 3.75 -6.015625 C 4.382812 -6.015625 4.878906 -6.15625 5.234375 -6.4375 C 5.585938 -6.714844 5.765625 -7.109375 5.765625 -7.609375 C 5.765625 -8.128906 5.597656 -8.53125 5.265625 -8.8125 C 4.941406 -9.089844 4.472656 -9.234375 3.859375 -9.234375 C 3.453125 -9.234375 3.027344 -9.183594 2.59375 -9.09375 C 2.164062 -9 1.714844 -8.863281 1.25 -8.6875 L 1.25 -9.953125 C 1.800781 -10.097656 2.289062 -10.207031 2.71875 -10.28125 C 3.144531 -10.351562 3.523438 -10.390625 3.859375 -10.390625 C 4.855469 -10.390625 5.65625 -10.136719 6.25 -9.640625 C 6.839844 -9.140625 7.140625 -8.476562 7.140625 -7.65625 C 7.140625 -7.09375 6.980469 -6.621094 6.671875 -6.25 C 6.359375 -5.875 5.902344 -5.613281 5.3125 -5.46875 Z M 5.3125 -5.46875 "/> | |
</symbol> | |
</g> | |
</defs> | |
<g id="surface22649"> | |
<rect x="0" y="0" width="522" height="256" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> | |
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 14 3.000039 L 28 3.000039 L 28 5.000039 L 14 5.000039 Z M 14 3.000039 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> | |
<use xlink:href="#glyph0-0" x="258.832031" y="40.5"/> | |
<use xlink:href="#glyph0-1" x="266.976562" y="40.5"/> | |
<use xlink:href="#glyph0-2" x="275.121094" y="40.5"/> | |
<use xlink:href="#glyph0-3" x="283.265625" y="40.5"/> | |
<use xlink:href="#glyph0-4" x="291.410156" y="40.5"/> | |
<use xlink:href="#glyph0-5" x="299.554688" y="40.5"/> | |
<use xlink:href="#glyph0-6" x="307.699219" y="40.5"/> | |
<use xlink:href="#glyph0-7" x="315.84375" y="40.5"/> | |
<use xlink:href="#glyph0-8" x="323.988281" y="40.5"/> | |
<use xlink:href="#glyph0-1" x="332.132812" y="40.5"/> | |
<use xlink:href="#glyph0-2" x="340.277344" y="40.5"/> | |
<use xlink:href="#glyph0-9" x="348.421875" y="40.5"/> | |
<use xlink:href="#glyph0-6" x="356.566406" y="40.5"/> | |
<use xlink:href="#glyph0-10" x="364.710938" y="40.5"/> | |
<use xlink:href="#glyph0-11" x="372.855469" y="40.5"/> | |
<use xlink:href="#glyph0-5" x="381" y="40.5"/> | |
<use xlink:href="#glyph0-12" x="389.144531" y="40.5"/> | |
<use xlink:href="#glyph0-9" x="397.289062" y="40.5"/> | |
<use xlink:href="#glyph0-6" x="405.433594" y="40.5"/> | |
<use xlink:href="#glyph0-7" x="413.578125" y="40.5"/> | |
<use xlink:href="#glyph0-13" x="421.722656" y="40.5"/> | |
<use xlink:href="#glyph0-13" x="429.867188" y="40.5"/> | |
<use xlink:href="#glyph0-8" x="438.011719" y="40.5"/> | |
<use xlink:href="#glyph0-14" x="446.15625" y="40.5"/> | |
<use xlink:href="#glyph0-11" x="454.300781" y="40.5"/> | |
<use xlink:href="#glyph0-15" x="462.445312" y="40.5"/> | |
<use xlink:href="#glyph0-12" x="470.589844" y="40.5"/> | |
<use xlink:href="#glyph0-9" x="478.734375" y="40.5"/> | |
<use xlink:href="#glyph0-6" x="486.878906" y="40.5"/> | |
<use xlink:href="#glyph0-16" x="495.023438" y="40.5"/> | |
</g> | |
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> | |
<use xlink:href="#glyph0-17" x="356.566406" y="12.601562"/> | |
<use xlink:href="#glyph0-18" x="364.710938" y="12.601562"/> | |
<use xlink:href="#glyph0-15" x="372.855469" y="12.601562"/> | |
<use xlink:href="#glyph0-6" x="381" y="12.601562"/> | |
<use xlink:href="#glyph0-8" x="389.144531" y="12.601562"/> | |
<use xlink:href="#glyph0-19" x="397.289062" y="12.601562"/> | |
</g> | |
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 8 8.000039 L 20 8.000039 L 20 10.000039 L 8 10.000039 Z M 8 8.000039 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> | |
<use xlink:href="#glyph0-0" x="126.976562" y="140.5"/> | |
<use xlink:href="#glyph0-2" x="135.121094" y="140.5"/> | |
<use xlink:href="#glyph0-3" x="143.265625" y="140.5"/> | |
<use xlink:href="#glyph0-4" x="151.410156" y="140.5"/> | |
<use xlink:href="#glyph0-5" x="159.554688" y="140.5"/> | |
<use xlink:href="#glyph0-6" x="167.699219" y="140.5"/> | |
<use xlink:href="#glyph0-7" x="175.84375" y="140.5"/> | |
<use xlink:href="#glyph0-8" x="183.988281" y="140.5"/> | |
<use xlink:href="#glyph0-1" x="192.132812" y="140.5"/> | |
<use xlink:href="#glyph0-2" x="200.277344" y="140.5"/> | |
<use xlink:href="#glyph0-9" x="208.421875" y="140.5"/> | |
<use xlink:href="#glyph0-6" x="216.566406" y="140.5"/> | |
<use xlink:href="#glyph0-10" x="224.710938" y="140.5"/> | |
<use xlink:href="#glyph0-11" x="232.855469" y="140.5"/> | |
<use xlink:href="#glyph0-5" x="241" y="140.5"/> | |
<use xlink:href="#glyph0-12" x="249.144531" y="140.5"/> | |
<use xlink:href="#glyph0-9" x="257.289062" y="140.5"/> | |
<use xlink:href="#glyph0-6" x="265.433594" y="140.5"/> | |
<use xlink:href="#glyph0-7" x="273.578125" y="140.5"/> | |
<use xlink:href="#glyph0-13" x="281.722656" y="140.5"/> | |
<use xlink:href="#glyph0-8" x="289.867188" y="140.5"/> | |
<use xlink:href="#glyph0-14" x="298.011719" y="140.5"/> | |
<use xlink:href="#glyph0-11" x="306.15625" y="140.5"/> | |
<use xlink:href="#glyph0-15" x="314.300781" y="140.5"/> | |
<use xlink:href="#glyph0-12" x="322.445312" y="140.5"/> | |
<use xlink:href="#glyph0-9" x="330.589844" y="140.5"/> | |
<use xlink:href="#glyph0-6" x="338.734375" y="140.5"/> | |
<use xlink:href="#glyph0-16" x="346.878906" y="140.5"/> | |
</g> | |
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> | |
<use xlink:href="#glyph0-17" x="216.566406" y="112.601563"/> | |
<use xlink:href="#glyph0-18" x="224.710938" y="112.601563"/> | |
<use xlink:href="#glyph0-15" x="232.855469" y="112.601563"/> | |
<use xlink:href="#glyph0-6" x="241" y="112.601563"/> | |
<use xlink:href="#glyph0-8" x="249.144531" y="112.601563"/> | |
<use xlink:href="#glyph0-20" x="257.289062" y="112.601563"/> | |
</g> | |
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 22 8.000039 L 26 8.000039 L 26 10.000039 L 22 10.000039 Z M 22 8.000039 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> | |
<use xlink:href="#glyph0-0" x="408.421875" y="140.5"/> | |
<use xlink:href="#glyph0-14" x="416.566406" y="140.5"/> | |
<use xlink:href="#glyph0-11" x="424.710938" y="140.5"/> | |
<use xlink:href="#glyph0-15" x="432.855469" y="140.5"/> | |
<use xlink:href="#glyph0-12" x="441" y="140.5"/> | |
<use xlink:href="#glyph0-9" x="449.144531" y="140.5"/> | |
<use xlink:href="#glyph0-6" x="457.289062" y="140.5"/> | |
<use xlink:href="#glyph0-16" x="465.433594" y="140.5"/> | |
</g> | |
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> | |
<use xlink:href="#glyph0-17" x="416.566406" y="112.601563"/> | |
<use xlink:href="#glyph0-18" x="424.710938" y="112.601563"/> | |
<use xlink:href="#glyph0-15" x="432.855469" y="112.601563"/> | |
<use xlink:href="#glyph0-6" x="441" y="112.601563"/> | |
<use xlink:href="#glyph0-8" x="449.144531" y="112.601563"/> | |
<use xlink:href="#glyph0-21" x="457.289062" y="112.601563"/> | |
</g> | |
<path style="fill:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 21 5.000039 L 15.826172 7.217422 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 15.481445 7.365078 L 15.842578 6.93832 L 15.826172 7.217422 L 16.039453 7.397891 Z M 15.481445 7.365078 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<path style="fill:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 21 5.000039 L 22.595117 6.595156 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 22.860352 6.860195 L 22.329883 6.683438 L 22.595117 6.595156 L 22.683594 6.329922 Z M 22.860352 6.860195 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2 13.000039 L 13 13.000039 L 13 15.000039 L 2 15.000039 Z M 2 13.000039 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> | |
<use xlink:href="#glyph0-0" x="5.121094" y="240.5"/> | |
<use xlink:href="#glyph0-2" x="13.265625" y="240.5"/> | |
<use xlink:href="#glyph0-3" x="21.410156" y="240.5"/> | |
<use xlink:href="#glyph0-4" x="29.554688" y="240.5"/> | |
<use xlink:href="#glyph0-5" x="37.699219" y="240.5"/> | |
<use xlink:href="#glyph0-6" x="45.84375" y="240.5"/> | |
<use xlink:href="#glyph0-7" x="53.988281" y="240.5"/> | |
<use xlink:href="#glyph0-8" x="62.132812" y="240.5"/> | |
<use xlink:href="#glyph0-2" x="70.277344" y="240.5"/> | |
<use xlink:href="#glyph0-9" x="78.421875" y="240.5"/> | |
<use xlink:href="#glyph0-6" x="86.566406" y="240.5"/> | |
<use xlink:href="#glyph0-10" x="94.710938" y="240.5"/> | |
<use xlink:href="#glyph0-11" x="102.855469" y="240.5"/> | |
<use xlink:href="#glyph0-5" x="111" y="240.5"/> | |
<use xlink:href="#glyph0-12" x="119.144531" y="240.5"/> | |
<use xlink:href="#glyph0-9" x="127.289062" y="240.5"/> | |
<use xlink:href="#glyph0-6" x="135.433594" y="240.5"/> | |
<use xlink:href="#glyph0-7" x="143.578125" y="240.5"/> | |
<use xlink:href="#glyph0-8" x="151.722656" y="240.5"/> | |
<use xlink:href="#glyph0-14" x="159.867188" y="240.5"/> | |
<use xlink:href="#glyph0-11" x="168.011719" y="240.5"/> | |
<use xlink:href="#glyph0-15" x="176.15625" y="240.5"/> | |
<use xlink:href="#glyph0-12" x="184.300781" y="240.5"/> | |
<use xlink:href="#glyph0-9" x="192.445312" y="240.5"/> | |
<use xlink:href="#glyph0-6" x="200.589844" y="240.5"/> | |
<use xlink:href="#glyph0-16" x="208.734375" y="240.5"/> | |
</g> | |
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> | |
<use xlink:href="#glyph0-17" x="86.566406" y="212.601563"/> | |
<use xlink:href="#glyph0-18" x="94.710938" y="212.601563"/> | |
<use xlink:href="#glyph0-15" x="102.855469" y="212.601563"/> | |
<use xlink:href="#glyph0-6" x="111" y="212.601563"/> | |
<use xlink:href="#glyph0-8" x="119.144531" y="212.601563"/> | |
<use xlink:href="#glyph0-22" x="127.289062" y="212.601563"/> | |
</g> | |
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 15 13.000039 L 22 13.000039 L 22 15.000039 L 15 15.000039 Z M 15 13.000039 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> | |
<use xlink:href="#glyph0-0" x="269.925781" y="240.5"/> | |
<use xlink:href="#glyph0-2" x="278.070312" y="240.5"/> | |
<use xlink:href="#glyph0-3" x="286.214844" y="240.5"/> | |
<use xlink:href="#glyph0-4" x="294.359375" y="240.5"/> | |
<use xlink:href="#glyph0-5" x="302.503906" y="240.5"/> | |
<use xlink:href="#glyph0-6" x="310.648438" y="240.5"/> | |
<use xlink:href="#glyph0-7" x="318.792969" y="240.5"/> | |
<use xlink:href="#glyph0-8" x="326.9375" y="240.5"/> | |
<use xlink:href="#glyph0-14" x="335.082031" y="240.5"/> | |
<use xlink:href="#glyph0-11" x="343.226562" y="240.5"/> | |
<use xlink:href="#glyph0-15" x="351.371094" y="240.5"/> | |
<use xlink:href="#glyph0-12" x="359.515625" y="240.5"/> | |
<use xlink:href="#glyph0-9" x="367.660156" y="240.5"/> | |
<use xlink:href="#glyph0-6" x="375.804688" y="240.5"/> | |
<use xlink:href="#glyph0-16" x="383.949219" y="240.5"/> | |
</g> | |
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> | |
<use xlink:href="#glyph0-17" x="306.566406" y="212.601563"/> | |
<use xlink:href="#glyph0-18" x="314.710938" y="212.601563"/> | |
<use xlink:href="#glyph0-15" x="322.855469" y="212.601563"/> | |
<use xlink:href="#glyph0-6" x="331" y="212.601563"/> | |
<use xlink:href="#glyph0-8" x="339.144531" y="212.601563"/> | |
<use xlink:href="#glyph0-23" x="347.289062" y="212.601563"/> | |
</g> | |
<path style="fill:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 14 10.000039 L 9.303906 12.167422 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 8.963477 12.324648 L 9.312695 11.888125 L 9.303906 12.167422 L 9.522266 12.342031 Z M 8.963477 12.324648 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<path style="fill:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 14 10.000039 L 16.846875 11.897891 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 17.158984 12.105898 L 16.604102 12.036563 L 16.846875 11.897891 L 16.881641 11.620547 Z M 17.158984 12.105898 " transform="matrix(20,0,0,20,-39,-44.2)"/> | |
</g> | |
</svg> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
#-*- coding:utf-8 -*- | |
# author: Filipe Funenga | |
# date: 8 Jul 2013 | |
# Basic Elements in a CLI specification. Just skip ahead. | |
class Leaf: | |
def __init__(self, name, value): | |
self.name = name | |
self.value = value | |
def __repr__(self): | |
return '%s("%s", %s)' % ( | |
self.__class__.__name__, self.name, self.value) | |
class Command(Leaf): | |
def __repr__(self): | |
return self.name | |
class Argument(Leaf): | |
def __repr__(self): | |
return self.name | |
class Option(Leaf): | |
def __repr__(self): | |
return self.name | |
class Branch: | |
def __init__(self, children): | |
self.children = children | |
def __repr__(self): | |
return '%s(%s)' % (self.__class__.__name__, str(self.children)) | |
class Required(Branch): | |
def __repr__(self): | |
return '(%s)' % ' '.join([str(c) for c in self.children]) | |
class Optional(Branch): | |
def __repr__(self): | |
return '[%s]' % ' '.join([str(c) for c in self.children]) | |
class Either(Branch): | |
def __repr__(self): | |
return ' | '.join([str(c) for c in self.children]) | |
class OneOrMore(Branch): | |
def __repr__(self): | |
return ' '.join([str(c) for c in self.children]) + '...' | |
# Search Tree Node | |
class Node: | |
def __init__(self, pattern): | |
assert isinstance(pattern, Required) | |
self.key = ''.join([('w' if isinstance(elem, Command) or | |
isinstance(elem, Argument) else | |
'o' if isinstance(elem, Option) else '') | |
for elem in pattern.children]) | |
self.pattern = pattern | |
self.children = self.__get_children() | |
def __get_children(self): | |
for child in self.pattern.children: | |
if isinstance(child, Branch): | |
children = [] | |
if isinstance(child, Required): | |
__temp = [([c] if c is not child else child.children) | |
for c in self.pattern.children] | |
children.append(Required([i for l in __temp for i in l])) | |
elif isinstance(child, Optional): | |
children.append(Required([c for c in self.pattern.children | |
if c is not child])) | |
__temp = [([c] if c is not child else child.children) | |
for c in self.pattern.children] | |
children.append(Required([i for l in __temp for i in l])) | |
elif isinstance(child, Either): | |
for elem in child.children: | |
__temp = [([c] if c is not elem else elem.children) | |
for c in self.pattern.children] | |
children.append(Required([i for l in __temp for i in l])) | |
elif isinstance(child, OneOrMore): | |
print child | |
return children | |
return [] | |
def __repr__(self): | |
return str(self.pattern) | |
# Main function | |
def main(): | |
# Define the CLI pattern here. This structure is usually retrieved from the | |
# CLI specification (known as docopt string). Some examples are provided | |
# bellow. | |
def pattern1(): # Usage: ./prog [<file>] update | |
argv1 = Optional([Argument('<file>', None)]) | |
argv2 = Command('update', None) | |
return Required([argv1, argv2]) | |
def pattern2(): # Usage: ./prog [<file> [<template>]] update | |
argv1 = Optional([Argument('<file>', None), | |
Optional([Argument('<template>', None)])]) | |
argv2 = Command('update', None) | |
return Required([argv1, argv2]) | |
def pattern3(): # Usage: ./prog [<file>] update [<template>] | |
argv1 = Optional([Argument('<file>', None)]) | |
argv2 = Command('update', None) | |
argv3 = Optional([Argument('<template>', None)]) | |
return Required([argv1, argv2, argv3]) | |
argv = pattern1() # change this function to try other patterns | |
print 'argv:', argv | |
# Search pattern tree (either using DFS or BFS) and collects leaf nodes. | |
# These new leaf nodes need to checked if they are ambiguous: if the | |
# pattern of skipped options (i.e. only commands and arguments) is not | |
# unique, then the CLI pattern is ambiguous. | |
print '---', 'tree search:', 'DFS' | |
search = {'DFS': -1, 'BFS': 0}['DFS'] | |
idx = 0 | |
leafs = {} | |
queue = [argv] | |
while queue: | |
node = queue.pop(search) | |
print 'idx: %d,' % idx, 'node:', node | |
idx += 1 | |
node = Node(node) | |
if len(node.children): | |
queue.extend(node.children) | |
else: | |
if not leafs.has_key(node.key): | |
leafs[node.key] = node.pattern | |
else: | |
exit('Ambiguous pattern in "%s" vs "%s"' % ( | |
str(leafs[node.key]), str(node.pattern))) | |
# Use collected leafs to make something. In this case, it just prints out | |
# the pattern. | |
print '---' | |
print 'leafs:' | |
for k,v in leafs.iteritems(): | |
print ' ', k, v | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment