QR Code renderer
- Will output QR Code as SVG - Temporarily removed Base64 feature - Changed install.sh to focus on platform - Makefile can now build and package for macOS or Linux separately
This commit is contained in:
parent
09b52a4f28
commit
66d4cbc9ec
12 changed files with 318 additions and 37 deletions
50
BuildCommand.cs
Normal file
50
BuildCommand.cs
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
namespace Glyph;
|
||||||
|
|
||||||
|
[Command("build", Description = "Build Glyph program.")]
|
||||||
|
public class BuildCommand : ICommand
|
||||||
|
{
|
||||||
|
[CommandParameter(0, Name = "file", Description = "Path to the Glyph source file.")]
|
||||||
|
public string FilePath { get; set; }
|
||||||
|
|
||||||
|
[CommandOption("dry", 'd', Description = "Dry run.")]
|
||||||
|
public bool DryRun { get; set; }
|
||||||
|
|
||||||
|
[CommandOption("verbose", 'v', Description = "Enable verbose output.")]
|
||||||
|
public bool Verbose { get; set; }
|
||||||
|
|
||||||
|
public async ValueTask ExecuteAsync(IConsole console)
|
||||||
|
{
|
||||||
|
|
||||||
|
var file = new FileInfo(FilePath);
|
||||||
|
|
||||||
|
if (!File.Exists(FilePath))
|
||||||
|
{
|
||||||
|
await console.Error.WriteLineAsync($"Error: File not found: {FilePath}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var lines = await File.ReadAllLinesAsync(FilePath);
|
||||||
|
var source = ScriptHelper.LinesToString(lines);
|
||||||
|
|
||||||
|
if (Verbose)
|
||||||
|
{
|
||||||
|
await console.Output.WriteLineAsync($"Compiling: {FilePath}");
|
||||||
|
}
|
||||||
|
|
||||||
|
var counter = ScriptHelper.CharacterCounter(1259, source);
|
||||||
|
|
||||||
|
if (counter.checker)
|
||||||
|
await console.Output.WriteAsync(counter.output);
|
||||||
|
|
||||||
|
if (DryRun)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var qrGenerator = new QRCodeGenerator();
|
||||||
|
var qrCodeData = qrGenerator.CreateQrCode(source, QRCodeGenerator.ECCLevel.H);
|
||||||
|
var qrCode = new SvgQRCode(qrCodeData);
|
||||||
|
var qrCodeAsSvg = qrCode.GetGraphic(57);
|
||||||
|
var path = Path.GetDirectoryName(FilePath);
|
||||||
|
var srcName = Path.GetFileNameWithoutExtension(file.Name);
|
||||||
|
File.WriteAllText(Path.Combine(path, $"{srcName}.svg"), qrCodeAsSvg);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,32 +0,0 @@
|
||||||
namespace Glyph;
|
|
||||||
|
|
||||||
[Command("build", Description = "Build Glyph program.")]
|
|
||||||
public class CompileCommand : ICommand
|
|
||||||
{
|
|
||||||
[CommandParameter(0, Name = "file", Description = "Path to the Glyph source file.")]
|
|
||||||
public string FilePath { get; set; }
|
|
||||||
|
|
||||||
[CommandOption("verbose", 'v', Description = "Enable verbose output.")]
|
|
||||||
public bool Verbose { get; set; }
|
|
||||||
|
|
||||||
public async ValueTask ExecuteAsync(IConsole console)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (!System.IO.File.Exists(FilePath))
|
|
||||||
{
|
|
||||||
await console.Error.WriteLineAsync($"Error: File not found: {FilePath}");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var lines = await System.IO.File.ReadAllLinesAsync(FilePath);
|
|
||||||
var source = ScriptHelper.LinesToString(lines);
|
|
||||||
|
|
||||||
if (Verbose)
|
|
||||||
{
|
|
||||||
await console.Output.WriteLineAsync($"Compiling: {FilePath}");
|
|
||||||
}
|
|
||||||
|
|
||||||
var binary = ScriptHelper.EncodeTo64(source);
|
|
||||||
File.WriteAllText(Path.Combine(Path.GetDirectoryName(FilePath), "output.glyb"), binary);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,4 +1,5 @@
|
||||||
global using Glyph;
|
global using Glyph;
|
||||||
|
global using QRCoder;
|
||||||
global using CliFx;
|
global using CliFx;
|
||||||
global using CliFx.Attributes;
|
global using CliFx.Attributes;
|
||||||
global using CliFx.Infrastructure;
|
global using CliFx.Infrastructure;
|
||||||
|
|
|
@ -6,12 +6,13 @@
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<AssemblyName>glyph</AssemblyName>
|
<AssemblyName>glyph</AssemblyName>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<Version>0.1.106</Version>
|
<Version>0.2.100</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CliFx" Version="2.3.5" />
|
<PackageReference Include="CliFx" Version="2.3.5" />
|
||||||
<PackageReference Include="DynamicExpresso.Core" Version="2.19.0" />
|
<PackageReference Include="DynamicExpresso.Core" Version="2.19.0" />
|
||||||
|
<PackageReference Include="QRCoder" Version="1.6.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -11,6 +11,10 @@ APPIMAGE_DIR = ./AppDir
|
||||||
|
|
||||||
all: build-linux build-mac package-linux package-mac
|
all: build-linux build-mac package-linux package-mac
|
||||||
|
|
||||||
|
linux: build-linux package-linux
|
||||||
|
|
||||||
|
mac: build-mac package-mac
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf bin obj $(OUTPUT_DIR)
|
rm -rf bin obj $(OUTPUT_DIR)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
await new CliApplicationBuilder()
|
await new CliApplicationBuilder()
|
||||||
.AddCommand<RunCommand>()
|
.AddCommand<RunCommand>()
|
||||||
.AddCommand<CompileCommand>()
|
.AddCommand<BuildCommand>()
|
||||||
.SetExecutableName("Glyph")
|
.SetExecutableName("Glyph")
|
||||||
.Build()
|
.Build()
|
||||||
.RunAsync();
|
.RunAsync();
|
||||||
|
|
|
@ -12,9 +12,9 @@ Glyph is a human-readable esoteric programming language that is designed to fit
|
||||||
|
|
||||||
- [ ] Compiler
|
- [ ] Compiler
|
||||||
|
|
||||||
- [ ] QR Code
|
- [x] QR Code
|
||||||
|
|
||||||
- [x] Base64
|
- [ ] Base64
|
||||||
|
|
||||||
## 🧾 Program Structure
|
## 🧾 Program Structure
|
||||||
|
|
||||||
|
@ -48,6 +48,8 @@ verb subject object [modifier]
|
||||||
|
|
||||||
- .NET 8.0
|
- .NET 8.0
|
||||||
- Dynamic Expresso for interpreter
|
- Dynamic Expresso for interpreter
|
||||||
|
- CILx for command line
|
||||||
|
- QRCoder for renderer
|
||||||
|
|
||||||
## 🗓️ Update Cycle
|
## 🗓️ Update Cycle
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ public class RunCommand : ICommand
|
||||||
}
|
}
|
||||||
|
|
||||||
lines = await System.IO.File.ReadAllLinesAsync(FilePath);
|
lines = await System.IO.File.ReadAllLinesAsync(FilePath);
|
||||||
|
var source = ScriptHelper.LinesToString(lines);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(InputPath))
|
if (!string.IsNullOrEmpty(InputPath))
|
||||||
{
|
{
|
||||||
|
@ -46,6 +47,9 @@ public class RunCommand : ICommand
|
||||||
await console.Output.WriteLineAsync($"Executing: {FilePath}");
|
await console.Output.WriteLineAsync($"Executing: {FilePath}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (source.Length >= 1187)
|
||||||
|
await console.Output.WriteAsync("Warning over 1,187 characters.");
|
||||||
|
|
||||||
Runner.Interpret(lines);
|
Runner.Interpret(lines);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,4 +25,11 @@ public static class ScriptHelper
|
||||||
/// <returns>The resulting string.</returns>
|
/// <returns>The resulting string.</returns>
|
||||||
static public string LinesToString(string[] lines) => string.Join(Environment.NewLine, lines);
|
static public string LinesToString(string[] lines) => string.Join(Environment.NewLine, lines);
|
||||||
|
|
||||||
|
static public (bool checker, string output) CharacterCounter(int limit, string text)
|
||||||
|
{
|
||||||
|
if (text.Length >= limit)
|
||||||
|
return (true, $"Warning source is over {limit:n} characters");
|
||||||
|
|
||||||
|
return (false, string.Empty);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,8 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
SOURCE_BIN="$1"
|
PLATFORM="$1"
|
||||||
|
SOURCE_BIN="./dist/glyph-$PLATFORM/glyph"
|
||||||
INSTALL_DIR="$HOME/.local/bin"
|
INSTALL_DIR="$HOME/.local/bin"
|
||||||
TARGET="$INSTALL_DIR/glyph"
|
TARGET="$INSTALL_DIR/glyph"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
set x 5
|
set x 5
|
||||||
mul x 2
|
mul x 2
|
||||||
say x
|
say x
|
||||||
|
inp y
|
||||||
|
say y
|
||||||
end
|
end
|
||||||
|
|
241
sample.svg
Normal file
241
sample.svg
Normal file
|
@ -0,0 +1,241 @@
|
||||||
|
<svg version="1.1" baseProfile="full" shape-rendering="crispEdges" width="2337" height="2337" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><rect x="0" y="0" width="2337" height="2337" fill="#FFFFFF" />
|
||||||
|
<rect x="228" y="228" width="399" height="57" fill="#000000" />
|
||||||
|
<rect x="741" y="228" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="855" y="228" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1083" y="228" width="456" height="57" fill="#000000" />
|
||||||
|
<rect x="1596" y="228" width="57" height="171" fill="#000000" />
|
||||||
|
<rect x="1710" y="228" width="399" height="57" fill="#000000" />
|
||||||
|
<rect x="228" y="285" width="57" height="285" fill="#000000" />
|
||||||
|
<rect x="570" y="285" width="57" height="285" fill="#000000" />
|
||||||
|
<rect x="684" y="285" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="969" y="285" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1083" y="285" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1254" y="285" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1482" y="285" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1710" y="285" width="57" height="285" fill="#000000" />
|
||||||
|
<rect x="2052" y="285" width="57" height="285" fill="#000000" />
|
||||||
|
<rect x="342" y="342" width="171" height="171" fill="#000000" />
|
||||||
|
<rect x="798" y="342" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1083" y="342" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1311" y="342" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1425" y="342" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1824" y="342" width="171" height="171" fill="#000000" />
|
||||||
|
<rect x="684" y="399" width="171" height="114" fill="#000000" />
|
||||||
|
<rect x="969" y="399" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1254" y="399" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1482" y="399" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1083" y="456" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1425" y="456" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="855" y="513" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1083" y="513" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1254" y="513" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1482" y="513" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="228" y="570" width="399" height="57" fill="#000000" />
|
||||||
|
<rect x="684" y="570" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="798" y="570" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="912" y="570" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1026" y="570" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1140" y="570" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="1254" y="570" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="1368" y="570" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1482" y="570" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1596" y="570" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1710" y="570" width="399" height="57" fill="#000000" />
|
||||||
|
<rect x="684" y="627" width="114" height="171" fill="#000000" />
|
||||||
|
<rect x="912" y="627" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1539" y="627" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="285" y="684" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="399" y="684" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="969" y="684" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1083" y="684" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1368" y="684" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1482" y="684" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1653" y="684" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1824" y="684" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1995" y="684" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="399" y="741" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="513" y="741" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="855" y="741" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="1026" y="741" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1140" y="741" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="1425" y="741" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1539" y="741" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1710" y="741" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1824" y="741" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="342" y="798" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="456" y="798" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="570" y="798" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1140" y="798" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1368" y="798" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1482" y="798" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1938" y="798" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="2052" y="798" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="285" y="855" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="684" y="855" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="855" y="855" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1083" y="855" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1254" y="855" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1425" y="855" width="285" height="57" fill="#000000" />
|
||||||
|
<rect x="1767" y="855" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="342" y="912" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="513" y="912" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="684" y="912" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="969" y="912" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1140" y="912" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1311" y="912" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1425" y="912" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1539" y="912" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="1995" y="912" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="228" y="969" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="513" y="969" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="627" y="969" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="855" y="969" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="1197" y="969" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="1539" y="969" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1653" y="969" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1767" y="969" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1938" y="969" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="228" y="1026" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="399" y="1026" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="570" y="1026" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="741" y="1026" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="912" y="1026" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1026" y="1026" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1311" y="1026" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1482" y="1026" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="1653" y="1026" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1824" y="1026" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1938" y="1026" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="399" y="1083" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="513" y="1083" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="969" y="1083" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1197" y="1083" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1368" y="1083" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1824" y="1083" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="342" y="1140" width="285" height="57" fill="#000000" />
|
||||||
|
<rect x="798" y="1140" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="969" y="1140" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1140" y="1140" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1368" y="1140" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1539" y="1140" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="1824" y="1140" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="2052" y="1140" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="342" y="1197" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="513" y="1197" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="684" y="1197" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="912" y="1197" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1026" y="1197" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1254" y="1197" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1482" y="1197" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1596" y="1197" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1710" y="1197" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1938" y="1197" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="399" y="1254" width="285" height="57" fill="#000000" />
|
||||||
|
<rect x="741" y="1254" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="855" y="1254" width="114" height="114" fill="#000000" />
|
||||||
|
<rect x="1197" y="1254" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1311" y="1254" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1425" y="1254" width="570" height="57" fill="#000000" />
|
||||||
|
<rect x="2052" y="1254" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="285" y="1311" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="456" y="1311" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="627" y="1311" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1083" y="1311" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1197" y="1311" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="1482" y="1311" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1653" y="1311" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1938" y="1311" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="342" y="1368" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="513" y="1368" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="855" y="1368" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="969" y="1368" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1140" y="1368" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1425" y="1368" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="1767" y="1368" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="2052" y="1368" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="228" y="1425" width="57" height="171" fill="#000000" />
|
||||||
|
<rect x="342" y="1425" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="627" y="1425" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1026" y="1425" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="1425" y="1425" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1539" y="1425" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1653" y="1425" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1767" y="1425" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1995" y="1425" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="342" y="1482" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="570" y="1482" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="741" y="1482" width="114" height="114" fill="#000000" />
|
||||||
|
<rect x="1083" y="1482" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1311" y="1482" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1539" y="1482" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1824" y="1482" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1938" y="1482" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="342" y="1539" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="513" y="1539" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="627" y="1539" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="969" y="1539" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1083" y="1539" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1254" y="1539" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1482" y="1539" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1596" y="1539" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1824" y="1539" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="228" y="1596" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="399" y="1596" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="513" y="1596" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="684" y="1596" width="285" height="57" fill="#000000" />
|
||||||
|
<rect x="1026" y="1596" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1197" y="1596" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1596" y="1596" width="399" height="57" fill="#000000" />
|
||||||
|
<rect x="2052" y="1596" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="684" y="1653" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="912" y="1653" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1140" y="1653" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1425" y="1653" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1596" y="1653" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1824" y="1653" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="1938" y="1653" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="228" y="1710" width="399" height="57" fill="#000000" />
|
||||||
|
<rect x="741" y="1710" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="912" y="1710" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1083" y="1710" width="171" height="114" fill="#000000" />
|
||||||
|
<rect x="1311" y="1710" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1539" y="1710" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1710" y="1710" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1938" y="1710" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="228" y="1767" width="57" height="285" fill="#000000" />
|
||||||
|
<rect x="570" y="1767" width="57" height="285" fill="#000000" />
|
||||||
|
<rect x="684" y="1767" width="57" height="114" fill="#000000" />
|
||||||
|
<rect x="798" y="1767" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1368" y="1767" width="285" height="57" fill="#000000" />
|
||||||
|
<rect x="1824" y="1767" width="285" height="57" fill="#000000" />
|
||||||
|
<rect x="342" y="1824" width="171" height="171" fill="#000000" />
|
||||||
|
<rect x="1254" y="1824" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1425" y="1824" width="456" height="57" fill="#000000" />
|
||||||
|
<rect x="684" y="1881" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="855" y="1881" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="969" y="1881" width="285" height="57" fill="#000000" />
|
||||||
|
<rect x="1482" y="1881" width="57" height="171" fill="#000000" />
|
||||||
|
<rect x="1596" y="1881" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1881" y="1881" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="2052" y="1881" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="798" y="1938" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1026" y="1938" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1197" y="1938" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1596" y="1938" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1767" y="1938" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1995" y="1938" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="684" y="1995" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="855" y="1995" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1140" y="1995" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1254" y="1995" width="171" height="57" fill="#000000" />
|
||||||
|
<rect x="1596" y="1995" width="114" height="57" fill="#000000" />
|
||||||
|
<rect x="1881" y="1995" width="228" height="57" fill="#000000" />
|
||||||
|
<rect x="228" y="2052" width="399" height="57" fill="#000000" />
|
||||||
|
<rect x="741" y="2052" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="912" y="2052" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1026" y="2052" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1311" y="2052" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1596" y="2052" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1767" y="2052" width="57" height="57" fill="#000000" />
|
||||||
|
<rect x="1881" y="2052" width="57" height="57" fill="#000000" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 15 KiB |
Loading…
Add table
Add a link
Reference in a new issue