Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c6aa0bf6b0
|
||
|
|
3ba676106f
|
||
|
|
ea776391ca
|
No files matched your search
@@ -72,7 +72,7 @@ The root `pom.xml` is an aggregator only and lists every module, so one build pr
|
||||
|
||||
Run `./mvnw verify` (`.\mvnw.cmd verify` on Windows) at the repository root. The foundation's tests include disposable MySQL 8.4 and PostgreSQL suites started with Testcontainers, so Docker access is required. They verify publication concurrency/commit/rollback, physical pooled-connection restoration, mapping/settings drift refusal, bounded lock contention, current-authorized context selection and immutable pins, audit/receipt failures, restart and incomplete results. They do not qualify production storage, hostile workers or physical printer output.
|
||||
|
||||
The build enforces Checkstyle plus 85% instruction/90% class coverage in the foundation. The published `qbit-build-parent` POMs leave `${revision}` in their own version, which causes a Maven parent-resolution warning despite a successful build. That upstream publication issue remains open; it is neither suppressed nor patched.
|
||||
The build enforces Checkstyle plus 85% instruction/90% class coverage in the foundation, and holds the renderer (94% instructions, 91% lines) and its bridge (85% instructions, 82% lines) to their measured baselines; the new packages and classes named in each `pom.xml` must reach 100% line coverage. Bounded mutation campaigns over the scene parser and the host printer gate run in the test phase; see [docs/security/fuzzing.md](docs/security/fuzzing.md). The published `qbit-build-parent` POMs leave `${revision}` in their own version, which causes a Maven parent-resolution warning despite a successful build. That upstream publication issue remains open; it is neither suppressed nor patched.
|
||||
|
||||
## Maven publication
|
||||
|
||||
|
||||
@@ -37,6 +37,23 @@
|
||||
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.5.4</version><configuration><dependenciesToScan combine.self="override"/></configuration></plugin>
|
||||
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.8.1</version><executions><execution><id>runtime-distribution</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><includeScope>runtime</includeScope><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin>
|
||||
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-checkstyle-plugin</artifactId><version>3.3.1</version><dependencies><dependency><groupId>com.puppycrawl.tools</groupId><artifactId>checkstyle</artifactId><version>10.12.6</version></dependency></dependencies><configuration><configLocation>${project.basedir}/checkstyle/config.xml</configLocation><propertyExpansion>checkstyle.reactor.root=${project.basedir}</propertyExpansion><includeTestSourceDirectory>true</includeTestSourceDirectory><consoleOutput>true</consoleOutput><violationSeverity>warning</violationSeverity><failOnViolation>true</failOnViolation></configuration><executions><execution><phase>validate</phase><goals><goal>check</goal></goals></execution></executions></plugin>
|
||||
<plugin>
|
||||
<!-- Coverage gates. The BUNDLE rule is the measured baseline of the existing bridge, rounded down (2026-11-11: 85.6% of instructions and 82.6% of lines); raise it when coverage rises and
|
||||
never lower it. The PACKAGE and CLASS rules hold new code to 100% line coverage from its first commit; a pattern matches nothing until its package or class exists, so the package that adds
|
||||
it needs no change here. Nothing is excluded: JaCoCo skips only code annotated as generated, and this build defines no such annotation. There is no skip switch. -->
|
||||
<groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.8.15</version><executions>
|
||||
<execution><goals><goal>prepare-agent</goal></goals></execution>
|
||||
<execution><id>report</id><phase>verify</phase><goals><goal>report</goal></goals></execution>
|
||||
<execution><id>coverage</id><phase>verify</phase><goals><goal>check</goal></goals><configuration><rules>
|
||||
<rule><element>BUNDLE</element><limits>
|
||||
<limit><counter>INSTRUCTION</counter><value>COVEREDRATIO</value><minimum>0.85</minimum></limit>
|
||||
<limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.82</minimum></limit>
|
||||
</limits></rule>
|
||||
<rule><element>CLASS</element><includes><include>com.kingsrook.qbits.documentgeneration.renderer.ZplRaster</include><include>com.kingsrook.qbits.documentgeneration.renderer.ZplRaster.*</include></includes><limits>
|
||||
<limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>1.00</minimum></limit>
|
||||
</limits></rule>
|
||||
</rules></configuration></execution>
|
||||
</executions></plugin>
|
||||
<plugin>
|
||||
<!-- Publish a self-contained POM: ${revision}/property versions are resolved at build time, so a consumer needs no -Drevision -->
|
||||
<groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>1.7.3</version>
|
||||
|
||||
+11
@@ -43,6 +43,13 @@ import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
*******************************************************************************/
|
||||
public final class IsolatedRendererBridge implements GenerationPorts.IsolatedRenderer
|
||||
{
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// the refusals renderer 0.1.0 can name. FailureCode also holds the version 2 scene refusals; a 0.1.0 worker //
|
||||
// cannot produce those, so one that names them is rejected like any other unknown code //
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
private static final Set<GenerationPorts.FailureCode> RENDERER_0_1_REFUSALS = java.util.EnumSet.range(
|
||||
GenerationPorts.FailureCode.BARCODE_FIT_TOO_SMALL, GenerationPorts.FailureCode.UNSUPPORTED_BARCODE_OPTION);
|
||||
|
||||
private final RendererLimits config;
|
||||
private final AssetReader assets;
|
||||
private final Exchange exchange;
|
||||
@@ -268,6 +275,10 @@ public final class IsolatedRendererBridge implements GenerationPorts.IsolatedRen
|
||||
{
|
||||
throw new IllegalArgumentException("WORKER_ERROR_REJECTED");
|
||||
}
|
||||
if(!RENDERER_0_1_REFUSALS.contains(code))
|
||||
{
|
||||
throw new IllegalArgumentException("WORKER_ERROR_REJECTED");
|
||||
}
|
||||
throw new GenerationPorts.RenderException(code);
|
||||
}
|
||||
int expectedFields = operation.equals("VALIDATE") ? 5 : 10;
|
||||
|
||||
+13
-1
@@ -183,13 +183,25 @@ class BridgeTest
|
||||
@Test
|
||||
void exactWorkerErrorsPreserveClosedFailureCodes() throws Exception
|
||||
{
|
||||
assertEquals(13, GenerationPorts.FailureCode.values().length);
|
||||
var released = java.util.EnumSet.range(GenerationPorts.FailureCode.BARCODE_FIT_TOO_SMALL, GenerationPorts.FailureCode.UNSUPPORTED_BARCODE_OPTION);
|
||||
assertEquals(13, released.size());
|
||||
assertEquals(28, GenerationPorts.FailureCode.values().length);
|
||||
for(var code : GenerationPorts.FailureCode.values())
|
||||
{
|
||||
var bridge = new IsolatedRendererBridge(config(directory), (actor, asset, maximum) -> new byte[0], (id, input, maximum) ->
|
||||
(RendererJson.JSON.writeValueAsString(Map.of("protocol", RendererJson.PROTOCOL, "requestId", id, "outcome", "ERROR",
|
||||
"rendererVersion", "qqq-renderer-0.1.0", "catalogVersion", "qqq-barcodes-9", "code", code.name())) + "\n").getBytes(StandardCharsets.UTF_8));
|
||||
var request = request(Map.of(), List.of());
|
||||
if(!released.contains(code))
|
||||
{
|
||||
// A version 2 scene refusal named by a 0.1.0 worker stays as unknown as it was before the vocabulary grew.
|
||||
for(var generic : List.of(assertThrows(QException.class, () -> bridge.render(request)), assertThrows(QException.class, () -> bridge.validate("actor-1", request.revision()))))
|
||||
{
|
||||
assertEquals(QException.class, generic.getClass(), code.name());
|
||||
assertEquals("Isolated renderer rejected or could not complete the request.", generic.getMessage());
|
||||
}
|
||||
continue;
|
||||
}
|
||||
var failure = assertThrows(GenerationPorts.RenderException.class, () -> bridge.render(request));
|
||||
assertEquals(code, failure.code());
|
||||
assertEquals(code.name(), failure.getMessage());
|
||||
|
||||
+218
@@ -0,0 +1,218 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.documentgeneration.renderer;
|
||||
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.SplittableRandom;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Seeded, bounded mutation campaign for a parser of untrusted input. A seed, an
|
||||
** iteration number, the corpus and the dictionary fully determine every input:
|
||||
** there is no clock and no unseeded randomness, so a finding replays exactly.
|
||||
** Targets, limits and the replay command are in `docs/security/fuzzing.md`. The
|
||||
** same class is kept in the test tree of `renderer`.
|
||||
*******************************************************************************/
|
||||
final class MutationCampaign
|
||||
{
|
||||
static final int MAXIMUM_ITERATIONS = 100_000;
|
||||
static final int MAXIMUM_INPUT_BYTES = 1024 * 1024;
|
||||
|
||||
private static final byte[] INTERESTING = {0, 9, 10, 13, ' ', '"', '\\', '^', '~', '_', ',', '{', '}', '[', ']', '0', '9', '-', (byte) 0x7F, (byte) 0x80, (byte) 0xC0, (byte) 0xFF};
|
||||
|
||||
private final List<byte[]> corpus;
|
||||
private final List<byte[]> dictionary;
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The parser under test. Returning normally means the input was accepted; a
|
||||
** target asserts its own property on what it accepts.
|
||||
***************************************************************************/
|
||||
@FunctionalInterface
|
||||
interface Target
|
||||
{
|
||||
/************************************************************************
|
||||
** Parse one generated input.
|
||||
************************************************************************/
|
||||
void accept(byte[] input) throws Exception;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** An input that was neither accepted nor refused in the declared way, with
|
||||
** the coordinates that regenerate it: `input(seed, iteration)`.
|
||||
***************************************************************************/
|
||||
record Finding(long seed, int iteration, String failure)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** What a campaign saw. A campaign that accepted or refused nothing has not
|
||||
** exercised both sides of the parser, so callers assert on the counts too.
|
||||
***************************************************************************/
|
||||
record Result(int accepted, int refused, List<Finding> findings)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** Valid inputs to start from, and tokens of the format to splice in.
|
||||
***************************************************************************/
|
||||
MutationCampaign(List<byte[]> corpus, List<String> dictionary)
|
||||
{
|
||||
if(corpus.isEmpty() || corpus.stream().anyMatch(seedInput -> seedInput.length > MAXIMUM_INPUT_BYTES))
|
||||
{
|
||||
throw new IllegalArgumentException("A campaign needs a corpus of inputs within the input limit.");
|
||||
}
|
||||
this.corpus = corpus.stream().map(byte[]::clone).toList();
|
||||
this.dictionary = dictionary.stream().map(token -> token.getBytes(StandardCharsets.UTF_8)).toList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The seeds for this run: the fixed ones, or only `-Dfuzz.seed=<n>` when a
|
||||
** finding is replayed or a longer campaign is run by hand.
|
||||
***************************************************************************/
|
||||
static long[] seeds(long... fixed)
|
||||
{
|
||||
Long replay = Long.getLong("fuzz.seed");
|
||||
return (replay == null ? fixed : new long[] {replay});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The iteration count for this run: `-Dfuzz.iterations=<n>`, never unbounded.
|
||||
***************************************************************************/
|
||||
static int iterations(int fallback)
|
||||
{
|
||||
int iterations = Integer.getInteger("fuzz.iterations", fallback);
|
||||
if(iterations < 1 || iterations > MAXIMUM_ITERATIONS)
|
||||
{
|
||||
throw new IllegalArgumentException("fuzz.iterations must be between 1 and " + MAXIMUM_ITERATIONS);
|
||||
}
|
||||
return (iterations);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The input of one iteration: a corpus entry with one to four mutations.
|
||||
***************************************************************************/
|
||||
byte[] input(long seed, int iteration)
|
||||
{
|
||||
SplittableRandom random = new SplittableRandom(seed + 0x9E3779B97F4A7C15L * (iteration + 1L));
|
||||
byte[] value = corpus.get(random.nextInt(corpus.size())).clone();
|
||||
int steps = 1 + random.nextInt(4);
|
||||
for(int step = 0; step < steps; step++)
|
||||
{
|
||||
value = mutate(value, random);
|
||||
}
|
||||
return (value.length > MAXIMUM_INPUT_BYTES ? Arrays.copyOf(value, MAXIMUM_INPUT_BYTES) : value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** Run iterations 0 to `iterations - 1`. A thrown failure that `refusal`
|
||||
** recognises is the parser saying no; any other, including a failed assertion
|
||||
** in the target and a stack overflow, is a finding.
|
||||
***************************************************************************/
|
||||
Result run(long seed, int iterations, Target target, Predicate<Throwable> refusal)
|
||||
{
|
||||
if(iterations < 1 || iterations > MAXIMUM_ITERATIONS)
|
||||
{
|
||||
throw new IllegalArgumentException("A campaign runs between 1 and " + MAXIMUM_ITERATIONS + " iterations.");
|
||||
}
|
||||
int accepted = 0;
|
||||
int refused = 0;
|
||||
List<Finding> findings = new ArrayList<>();
|
||||
for(int iteration = 0; iteration < iterations; iteration++)
|
||||
{
|
||||
try
|
||||
{
|
||||
target.accept(input(seed, iteration));
|
||||
accepted++;
|
||||
}
|
||||
catch(Exception | AssertionError | StackOverflowError failure)
|
||||
{
|
||||
if(refusal.test(failure))
|
||||
{
|
||||
refused++;
|
||||
}
|
||||
else
|
||||
{
|
||||
findings.add(new Finding(seed, iteration, failure.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
return (new Result(accepted, refused, List.copyOf(findings)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** One structural or byte-level change at a random position.
|
||||
***************************************************************************/
|
||||
private byte[] mutate(byte[] value, SplittableRandom random)
|
||||
{
|
||||
int at = value.length == 0 ? 0 : random.nextInt(value.length);
|
||||
int span = value.length == 0 ? 0 : 1 + random.nextInt(Math.min(16, value.length - at));
|
||||
byte[] noise = new byte[1 + random.nextInt(8)];
|
||||
random.nextBytes(noise);
|
||||
return (switch(random.nextInt(8))
|
||||
{
|
||||
case 0 -> splice(value, at, span, new byte[0]);
|
||||
case 1 -> splice(value, at, 0, Arrays.copyOfRange(value, at, at + span));
|
||||
case 2 -> Arrays.copyOf(value, at);
|
||||
case 3 -> splice(value, at, 0, dictionary.isEmpty() ? noise : dictionary.get(random.nextInt(dictionary.size())));
|
||||
case 4 -> splice(value, at, 0, noise);
|
||||
case 5 -> splice(value, at, Math.min(1, value.length), new byte[] {INTERESTING[random.nextInt(INTERESTING.length)]});
|
||||
case 6 -> splice(value, at, Math.min(1, value.length), new byte[] {noise[0]});
|
||||
default -> splice(value, at, Math.min(1, value.length), value.length == 0 ? noise : new byte[] {(byte) (value[at] ^ (1 << random.nextInt(8)))});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** Replace `removed` bytes at `at` with `inserted`.
|
||||
***************************************************************************/
|
||||
private static byte[] splice(byte[] value, int at, int removed, byte[] inserted)
|
||||
{
|
||||
byte[] result = new byte[value.length - removed + inserted.length];
|
||||
System.arraycopy(value, 0, result, 0, at);
|
||||
System.arraycopy(inserted, 0, result, at, inserted.length);
|
||||
System.arraycopy(value, at + removed, result, at + inserted.length, value.length - at - removed);
|
||||
return (result);
|
||||
}
|
||||
}
|
||||
+175
@@ -0,0 +1,175 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.documentgeneration.renderer;
|
||||
|
||||
|
||||
import java.nio.charset.CharacterCodingException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.HexFormat;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import com.kingsrook.qbits.documentgeneration.GenerationPorts;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** The mutation harness is deterministic and reports what it should, and one
|
||||
** bounded campaign runs in the normal test phase over the host printer gate.
|
||||
** Seeds, limits and the replay command: `docs/security/fuzzing.md`.
|
||||
*******************************************************************************/
|
||||
class MutationCampaignTest
|
||||
{
|
||||
private static final long[] SEEDS = {20261111L, 7919L};
|
||||
private static final int ITERATIONS = 20_000;
|
||||
private static final Path CORPUS = Path.of("..", "..", "renderer", "src", "test", "resources", "compat-v1", "zpl");
|
||||
private static final GenerationPorts.Stock STOCK = new GenerationPorts.Stock(76200, 50800, 0, 0, 0, 0, 203);
|
||||
private static final Set<String> COMMANDS = Set.of("XA", "XZ", "PW", "LL", "LH", "CI", "FO", "A0", "FH", "FD", "FS", "GB", "GF");
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** A seed and an iteration name one input, on every run and every machine.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void aSeedAndAnIterationAlwaysGiveTheSameInput()
|
||||
{
|
||||
MutationCampaign campaign = new MutationCampaign(List.of("^XA^FO10,20^GB30,40,2^FS^XZ".getBytes(StandardCharsets.US_ASCII)), List.of("^FO", "^GB"));
|
||||
MutationCampaign again = new MutationCampaign(List.of("^XA^FO10,20^GB30,40,2^FS^XZ".getBytes(StandardCharsets.US_ASCII)), List.of("^FO", "^GB"));
|
||||
Set<String> distinct = new HashSet<>();
|
||||
for(int iteration = 0; iteration < 200; iteration++)
|
||||
{
|
||||
byte[] input = campaign.input(42L, iteration);
|
||||
assertArrayEquals(input, again.input(42L, iteration));
|
||||
assertTrue(input.length <= MutationCampaign.MAXIMUM_INPUT_BYTES);
|
||||
distinct.add(HexFormat.of().formatHex(input));
|
||||
}
|
||||
assertTrue(distinct.size() > 100, "mutations should rarely repeat: " + distinct.size());
|
||||
assertNotEquals(HexFormat.of().formatHex(campaign.input(42L, 0)), HexFormat.of().formatHex(campaign.input(43L, 0)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The harness fails when it should: a crash and an unsafe acceptance are both
|
||||
** findings, each carrying the coordinates that regenerate its input.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void aCrashAndAnUnsafeAcceptanceAreFindingsThatReplay()
|
||||
{
|
||||
MutationCampaign campaign = new MutationCampaign(List.of("0123456789".getBytes(StandardCharsets.US_ASCII)), List.of());
|
||||
MutationCampaign.Result result = campaign.run(42L, 300, input ->
|
||||
{
|
||||
if(input.length % 3 == 0)
|
||||
{
|
||||
throw new IllegalArgumentException("REFUSED");
|
||||
}
|
||||
if(input.length % 3 == 1)
|
||||
{
|
||||
throw new IllegalStateException("crash");
|
||||
}
|
||||
assertTrue(input.length < 11, "accepted an input it should have refused");
|
||||
}, IllegalArgumentException.class::isInstance);
|
||||
assertEquals(300, result.accepted() + result.refused() + result.findings().size());
|
||||
assertTrue(result.accepted() > 0 && result.refused() > 0);
|
||||
assertTrue(result.findings().stream().anyMatch(finding -> finding.failure().startsWith("java.lang.IllegalStateException")));
|
||||
assertTrue(result.findings().stream().anyMatch(finding -> finding.failure().contains("AssertionFailedError")));
|
||||
for(MutationCampaign.Finding finding : result.findings())
|
||||
{
|
||||
int length = campaign.input(finding.seed(), finding.iteration()).length;
|
||||
assertTrue(length % 3 == 1 || (length % 3 == 2 && length >= 11), finding.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** A campaign is always bounded and always has something to mutate.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void campaignsAreBounded()
|
||||
{
|
||||
MutationCampaign campaign = new MutationCampaign(List.of(new byte[0]), List.of());
|
||||
assertThrows(IllegalArgumentException.class, () -> campaign.run(1L, 0, input -> {}, failure -> true));
|
||||
assertThrows(IllegalArgumentException.class, () -> campaign.run(1L, MutationCampaign.MAXIMUM_ITERATIONS + 1, input -> {}, failure -> true));
|
||||
assertThrows(IllegalArgumentException.class, () -> new MutationCampaign(List.of(), List.of()));
|
||||
assertThrows(IllegalArgumentException.class, () -> new MutationCampaign(List.of(new byte[MutationCampaign.MAXIMUM_INPUT_BYTES + 1]), List.of()));
|
||||
assertEquals(50, campaign.run(1L, 50, input -> {}, failure -> false).accepted());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** Property: whatever the host printer gate accepts holds only the commands
|
||||
** the renderer may emit, and no tilde command. Every other input is refused
|
||||
** with the gate's own IllegalArgumentException, or with the strict decoder's
|
||||
** CharacterCodingException for field text that is not UTF-8; any other
|
||||
** failure is a finding.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void theHostPrinterGateAcceptsOnlyTheRendererCommandSet() throws Exception
|
||||
{
|
||||
List<byte[]> corpus = new ArrayList<>();
|
||||
for(String name : List.of("box-203", "text-font0-203", "image-203", "barcode-scale-203", "raster-text-rotation-203"))
|
||||
{
|
||||
byte[] released = Files.readAllBytes(CORPUS.resolve(name + ".zpl"));
|
||||
ZplOutputPolicy.validate(released, STOCK);
|
||||
corpus.add(released);
|
||||
}
|
||||
MutationCampaign campaign = new MutationCampaign(corpus, List.of("^XA", "^XZ\n", "^FO", "^GFA,", "^GB", "^FS\n", "^A0N,", "^FH_^FD", "^PW", "^LL", "^LH0,0", "^CI28\n",
|
||||
"~DG", "~JR", "^XG", "^DF", "^JU", "^FX", "^FB", "99999", "0", ",", "\n", "_5E", "_7E"));
|
||||
int iterations = MutationCampaign.iterations(ITERATIONS);
|
||||
for(long seed : MutationCampaign.seeds(SEEDS))
|
||||
{
|
||||
MutationCampaign.Result result = campaign.run(seed, iterations, MutationCampaignTest::gate,
|
||||
failure -> failure instanceof IllegalArgumentException || failure instanceof CharacterCodingException);
|
||||
assertEquals(List.of(), result.findings(), "replay with -Dfuzz.seed=" + seed + " -Dfuzz.iterations=" + iterations);
|
||||
assertFalse(result.accepted() == 0 || result.refused() == 0, "the campaign must reach both acceptance and refusal: " + result);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The target, and an independent reading of what it let through.
|
||||
***************************************************************************/
|
||||
private static void gate(byte[] zpl) throws Exception
|
||||
{
|
||||
ZplOutputPolicy.validate(zpl, STOCK);
|
||||
for(int index = 0; index < zpl.length; index++)
|
||||
{
|
||||
assertNotEquals('~', (char) zpl[index], "accepted a tilde command");
|
||||
if(zpl[index] == '^')
|
||||
{
|
||||
assertTrue(index + 2 < zpl.length && COMMANDS.contains(new String(zpl, index + 1, 2, StandardCharsets.US_ASCII)), "accepted a command outside the renderer set");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.documentgeneration.renderer;
|
||||
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.HexFormat;
|
||||
import java.util.List;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.kingsrook.qbits.documentgeneration.GenerationPorts;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** The released version 1 bytes, as the host receives them: each stored ZPL of
|
||||
** the renderer's `compat-v1` corpus is exactly the bytes its manifest names and
|
||||
** passes the unchanged host printer gate for the stock it was rendered for. The
|
||||
** corpus has one copy, in the renderer module, so the two tests cannot drift.
|
||||
*******************************************************************************/
|
||||
class ZplSceneOneCompatibilityTest
|
||||
{
|
||||
private static final Path CORPUS = Path.of("..", "..", "renderer", "src", "test", "resources", "compat-v1");
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** One manifest line per stored output: hash, two spaces, path.
|
||||
***************************************************************************/
|
||||
static List<String> outputs() throws Exception
|
||||
{
|
||||
List<String> lines = Files.readAllLines(CORPUS.resolve("SHA256SUMS"), StandardCharsets.US_ASCII);
|
||||
assertFalse(lines.isEmpty());
|
||||
return (lines);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** A released label that the host gate refused could never have printed.
|
||||
***************************************************************************/
|
||||
@ParameterizedTest(name = "{0}")
|
||||
@MethodSource("outputs")
|
||||
void releasedBytesAreIntactAndPassTheHostPrinterGate(String line) throws Exception
|
||||
{
|
||||
assertTrue(line.matches("[0-9a-f]{64} zpl/[a-z0-9-]+\\.zpl"), line);
|
||||
String name = line.substring(70, line.length() - 4);
|
||||
byte[] bytes = Files.readAllBytes(CORPUS.resolve("zpl").resolve(name + ".zpl"));
|
||||
assertEquals(line.substring(0, 64), HexFormat.of().formatHex(MessageDigest.getInstance("SHA-256").digest(bytes)), name);
|
||||
JsonNode stock = RendererJson.JSON.readTree(Files.readAllBytes(CORPUS.resolve("cases").resolve(name + ".json"))).path("stock");
|
||||
GenerationPorts.Stock printed = new GenerationPorts.Stock(stock.path("widthMicrons").intValue(), stock.path("heightMicrons").intValue(), stock.path("topMicrons").intValue(),
|
||||
stock.path("rightMicrons").intValue(), stock.path("bottomMicrons").intValue(), stock.path("leftMicrons").intValue(), stock.path("dpi").intValue());
|
||||
assertDoesNotThrow(() -> ZplOutputPolicy.validate(bytes, printed), name);
|
||||
}
|
||||
}
|
||||
@@ -1,973 +0,0 @@
|
||||
# Design: great labels, barcodes, page layout and preview
|
||||
|
||||
Status: draft for review, 2026-11-11. No code in this change. Owner decisions are in section 12.
|
||||
|
||||
This document designs four things the document module lacks and the preview James asked for, then gives a work
|
||||
plan that separate agents can build from. It covers `qbit-document-generation` (foundation, renderer and bridges)
|
||||
and says what the neighbouring repositories and GG Forge must do.
|
||||
|
||||
1. Layouts in millimetres, inches or points, so one design serves 203, 300 and 600 dpi.
|
||||
2. Alignment and fit rules for text and barcodes, so a long value shrinks or wraps by a stated rule.
|
||||
3. A preview inside the QBit that shows the exact bitmap before anything prints.
|
||||
4. Fonts that work in every environment: a bundled default set, plus uploads that need no object storage.
|
||||
|
||||
## 0. What exists today
|
||||
|
||||
Every statement here was read in code on 2026-11-11. Paths are relative to this repository unless a repository is
|
||||
named. "Not verified" marks what was not confirmed. Facts about other repositories (Forge, printing, the print
|
||||
agent, the scanner QBit, Record Files, the frontend and QQQ core) come from read-only surveys of those repositories
|
||||
made for this task, read at the versions Forge pins where that matters.
|
||||
|
||||
| Area | Today | Where |
|
||||
|---|---|---|
|
||||
| Label scene | `qqq-zpl-scene/1`, a JSON list of `text`, `rasterText`, `box`, `image`, `barcode`. Every coordinate and size is an integer printer dot. Stock dpi must be 203, 300 or 600. | `renderer/.../ZplRenderer.java` |
|
||||
| Printer font text | `text` emits `^A0N` (printer font 0). The renderer cannot measure that font, so it refuses when `x + characters * width` passes the label width. | `ZplRenderer.java` `render`, case `text` |
|
||||
| TrueType text | `rasterText` draws one supplied TrueType face into a dot box. It already wraps and already has `align` left, center, right. It never shrinks. Overflow is `RASTER_TEXT_DOES_NOT_FIT`. | `renderer/.../RasterText.java` |
|
||||
| Barcode | 71 catalogue ids. A `fit` box in microns picks the largest whole-dot module for 13 symbologies; the raster sits at the box origin (no centring). Linear bar height scales with the module. No human-readable line. | `BarcodeFit.java`, `Barcodes.java`, `renderer/BARCODE-FIT.md` |
|
||||
| Fonts | None bundled in the renderer. A font is a template asset whose bytes the host must supply on every render. | `RenderInput.java`, `bridges/renderer/.../IsolatedRendererBridge.java` `resolve` |
|
||||
| Asset bytes | The foundation stores an asset row only (name, file version id, hash). The only shipped reader is Record Files, whose upload path is a Collaboration attachment and needs a storage bucket. | `GenerationTables.java`, `bridges/record-files/...`, `qbit-record-files` |
|
||||
| Refusals | Apart from 13 barcode fit codes, every renderer failure is the single code `RENDER_FAILED`, by design, so that no record data leaks. | `RendererMain.java` `errorCode` |
|
||||
| Output check | The host re-parses the ZPL and allows only `^A0N` text, `^GB` and uncompressed `^GFA`. | `bridges/renderer/.../ZplOutputPolicy.java` |
|
||||
| Preview | "Preview draft" generates a retained, audited file from a real record. A PDF opens in the shared viewer. A ZPL file cannot be shown as an image. | `GenerationAuthoringProcesses.java`, `DocumentGenerationService.preview`, `qqq-frontend-next` `attachment-download.ts` |
|
||||
| Stock and dpi | A template has one stock; the stock carries the dpi. A revision copies both. | `GenerationTables.java` |
|
||||
| Page documents | FreeMarker HTML with paged CSS 2.1 through a patched OpenHTML to PDF; TrueType assets; one starter (packing slip). | `PdfRenderer.java`, `renderer/README.md` |
|
||||
| Coverage gate | JaCoCo 85% instructions and 90% classes in `foundation` only. `renderer` and the bridges have no gate. | module `pom.xml` files |
|
||||
| Release | Shared Gitea workflow: `develop` publishes a SNAPSHOT, `release/X.Y` publishes `X.Y.0-RC.N` and tags it. `develop` is `1.4.0-SNAPSHOT`. Renderer images are built by hand from a released version. | `.gitea/workflows/build.yaml`, `renderer/IMAGE-PUBLISH.md` |
|
||||
|
||||
How GG Forge uses it today (read from Forge `origin/develop`):
|
||||
|
||||
- Forge pins the document generation family at `1.1.0-RC.2` and serves `qqq-frontend-next` `1.0.0-RC.41`.
|
||||
- Forge renders through `RemoteRendererBridge`, so `ZplOutputPolicy` applies to every label.
|
||||
- `EchoTemplatePublisher` computes all geometry by hand (microns to dots, insets, a module search) and Forge seeds
|
||||
ten documents: the same designs repeated for 4 x 1 in at 203 and 300 dpi and 3 x 2 in at 203 dpi.
|
||||
- `EchoPrintingDestinations.resolve` offers a document only when the revision's stock width, height and dpi equal
|
||||
the media profile the print agent reports from the Windows queue default. When nothing matches, the document
|
||||
list is empty and no reason is given. This filter is Forge code, not scanner or printing QBit code.
|
||||
- `EchoBundledFonts` answers one font from Forge's jar because no environment could hold an uploaded font, and a
|
||||
Liquibase changeset cannot put bytes in a bucket.
|
||||
|
||||
The printing QBit's built-in test label (`qbit-printing` `PrintingTestDocuments`) is the quality bar: it is drawn in
|
||||
points on a Java canvas, scaled by `dpi / 72`, with a bundled bold TrueType face, and sent as whole-label `^GFA`
|
||||
strips plus a native `^BC` barcode.
|
||||
|
||||
## 1. Goals and non-goals
|
||||
|
||||
### What a person designing a label experiences
|
||||
|
||||
- They write sizes in millimetres, inches or points. They never compute dots.
|
||||
- They say "centre this in that box" for any element, and it is centred for every value and every dpi.
|
||||
- They pick a font by name from a small set that is always there, or upload their own once.
|
||||
- They state what happens to a long value: shrink to a floor, wrap to a number of lines, cut with a visible mark,
|
||||
or refuse. The default never changes data silently.
|
||||
- They open the template and see the label. They change the layout and see it again in seconds, at 203, 300 or
|
||||
600 dpi, with sample values or a real record, without printing.
|
||||
- Beside the picture they read plain warnings: text was shrunk, a barcode is at its smallest safe module, a field
|
||||
would not fit its longest allowed value.
|
||||
- Publishing proves the layout fits the longest value each field declares, so a published label is not refused
|
||||
for length at print time.
|
||||
|
||||
### What a person printing a label experiences
|
||||
|
||||
- The label prints at the printer's own resolution. Nobody creates a 203 dpi copy and a 300 dpi copy.
|
||||
- When a label cannot print, the message names the field, what it needed and what it had.
|
||||
- When a document is not offered for a printer, the screen says why (the stock size differs) instead of showing
|
||||
an empty list.
|
||||
|
||||
### Non-goals in this round
|
||||
|
||||
- A drag-and-drop visual designer. The editor stays source first; the preview makes that workable.
|
||||
- Raw ZPL templates or any printer command escape hatch.
|
||||
- Printer languages other than ZPL (EPL, TSPL), colour, RFID.
|
||||
- Changing how existing `qqq-zpl-scene/1` documents print.
|
||||
- GS1 conformance grading or certification. The design gives rules and tests, not a verifier.
|
||||
|
||||
## 2. Layout model
|
||||
|
||||
### 2.1 Scene version 2
|
||||
|
||||
A new schema id, `qqq-zpl-scene/2`, lives in the same `zplSource` field. The renderer chooses the code path from
|
||||
the `schema` value alone.
|
||||
|
||||
```json
|
||||
{
|
||||
"schema": "qqq-zpl-scene/2",
|
||||
"design": { "width": "4in", "height": "1in" },
|
||||
"defaults": { "font": "qqq-sans-bold", "size": "9pt" },
|
||||
"samples": {
|
||||
"typical": { "record": { "humanReadable": "(01)00012345678905(10)L240611A", "rendererValue": "[01]00012345678905[10]L240611A" } },
|
||||
"longest": { "record": { "humanReadable": "(01)00012345678905(10)L240611A-RETURNED-000123", "rendererValue": "[01]00012345678905[10]L240611A-RETURNED-000123" } }
|
||||
},
|
||||
"elements": [
|
||||
{ "id": "code", "type": "barcode", "symbology": "gs1-128", "valuePath": "/record/rendererValue",
|
||||
"anchor": "top-center", "y": "0.5mm", "width": "94mm", "height": "11mm",
|
||||
"align": "center", "valign": "middle", "minModule": "0.25mm", "quiet": 10 },
|
||||
{ "id": "caption", "type": "text", "valuePath": "/record/humanReadable",
|
||||
"anchor": "bottom-center", "y": "0.5mm", "width": "94mm", "height": "6.5mm",
|
||||
"align": "center", "valign": "middle", "size": "11pt", "maxLength": 48,
|
||||
"fit": { "maxLines": 2, "shrinkTo": "7pt", "overflow": "refuse" } }
|
||||
],
|
||||
"overrides": [
|
||||
{ "when": { "dpi": [203] }, "set": { "caption": { "threshold": 144 } } }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
The example assumes 3 mm margins on 4 x 1 in stock, a printable area of 95.6 x 19.4 mm.
|
||||
|
||||
### 2.2 Units
|
||||
|
||||
Every length is a string made of a number and a unit: `"12.5mm"`, `"0.5in"`, `"9pt"`, `"25%"`, `"1dot"`.
|
||||
|
||||
| Unit | Meaning | Use |
|
||||
|---|---|---|
|
||||
| `mm`, `in` | Physical length | Positions and sizes |
|
||||
| `pt` | 1/72 inch | Font sizes, line thickness |
|
||||
| `%` | Share of the container's width (for `x`, `width`) or height (for `y`, `height`) | Layouts that adapt to the stock |
|
||||
| `dot` | One printer dot | Only where a device unit is meant (a hairline). Outside an override it raises the warning `DEVICE_UNIT_USED`. |
|
||||
|
||||
One rule, no ambient unit setting, so a value read out of context is never ambiguous. Up to three decimals are
|
||||
accepted. Lengths convert to integer micrometres first (the unit the stock already uses), then to dots:
|
||||
|
||||
| Quantity | Rounding | Reason |
|
||||
|---|---|---|
|
||||
| Position | Nearest dot, the existing `Stock.dots` rule | Symmetric error |
|
||||
| Box width and height | Down, the existing `BarcodeFit.dotsInside` rule | Content never leaves its designed box |
|
||||
| Line and box thickness | Nearest, never less than 1 dot | A thin rule must not vanish |
|
||||
| Barcode module | Up to a whole dot from the stated minimum (section 4) | Bars must be whole dots |
|
||||
| Font size | Not rounded; the face is scaled by `points * dpi / 72` | Type scales continuously |
|
||||
|
||||
### 2.3 Stock, printable area and render target
|
||||
|
||||
- Coordinates start at the top left of the printable area: the stock less its margins. A design therefore never
|
||||
prints in the margin.
|
||||
- `design.width` and `design.height` state the stock the layout was drawn for. At render time the stock must match
|
||||
within 0.5 mm on each side, otherwise the refusal `STOCK_MISMATCH` reports both sizes. (Exact micrometre
|
||||
equality, which Forge's filter uses today, fails on driver rounding such as 101.5 against 101.6 mm.)
|
||||
- Resolution stops being a property of the document. A version 2 revision renders at a **render target** dpi
|
||||
supplied by the caller: the printer's reported resolution when printing, the chosen value when previewing. The
|
||||
stock row's `dpi` remains and becomes the default target and the only target for version 1 scenes.
|
||||
- `DocumentGenerationService.Request` gains an optional `targetDpi` (203, 300 or 600). It is recorded on the
|
||||
request row in a new nullable column and framed into the intent digest when present, following the pattern used
|
||||
for the media profile (`docs/EXPECTED-PRINT-INTENT.md`). The renderer refuses a target that differs from the
|
||||
stock's dpi for a version 1 scene (`TARGET_REQUIRES_SCENE_2`), because only the renderer reads the scene.
|
||||
- Later round: `design.stock: "atLeast"` lets one design print on a larger stock, with anchors and percentages
|
||||
resolving against the actual printable area. The first round supports `exact` only.
|
||||
|
||||
### 2.4 Anchors and alignment
|
||||
|
||||
Two separate ideas, both available on every element.
|
||||
|
||||
**Where the box sits (`anchor`, `x`, `y`, `width`, `height`).** `anchor` names one of nine points:
|
||||
`top-left` (default), `top-center`, `top-right`, `middle-left`, `center`, `middle-right`, `bottom-left`,
|
||||
`bottom-center`, `bottom-right`. The same point of the element's box is placed on that point of its container.
|
||||
`x` and `y` are then distances inward from the anchored edge; on a centred axis they shift right or down and may be
|
||||
negative. An omitted `width` or `height` means the rest of the container on that axis.
|
||||
|
||||
```
|
||||
container (printable area or group)
|
||||
+--------------------------------------------------+
|
||||
| anchor: top-center, y: 1mm |
|
||||
| +------------------------------+ |
|
||||
| | box (width x height) | |
|
||||
| | content placed by | |
|
||||
| | align / valign | |
|
||||
| +------------------------------+ |
|
||||
| |
|
||||
| anchor: bottom-left anchor: bottom-right
|
||||
| x: 2mm, y: 1mm x: 2mm, y: 1mm |
|
||||
| +--------+ +--------+ |
|
||||
+--------------------------------------------------+
|
||||
```
|
||||
|
||||
**Where the content sits in the box (`align`, `valign`).** `align` is `left`, `center` or `right`; `valign` is `top`,
|
||||
`middle` or `bottom`. They apply to text lines, to a fitted barcode whose size depends on its data, and to a scaled
|
||||
image. Slack is split with integer division, so a centred element is off by at most one dot.
|
||||
|
||||
`rotation` is 0, 90, 180 or 270 degrees clockwise for text, barcodes and images. The box is given as it appears on
|
||||
the label, after rotation.
|
||||
|
||||
### 2.5 Containers
|
||||
|
||||
`group` is in: a box with its own `anchor`, position and size, whose children are positioned relative to it. It
|
||||
lets a block move as a unit and gives percentages something smaller than the label to refer to. Groups nest to a
|
||||
depth of four.
|
||||
|
||||
Rows and columns that distribute children automatically (`stack`, tables) are out of this round. No label in hand
|
||||
needs them, and they can be added to version 2 later without breaking a scene that does not use them.
|
||||
|
||||
### 2.6 One design, several resolutions
|
||||
|
||||
A scene has no dots in it, so the same revision renders at any target. Small physical differences between
|
||||
resolutions are expected (a 0.25 mm module is 2 dots at 203 dpi and 3 dots, 0.254 mm, at 300 dpi) and the
|
||||
diagnostics report the actual values.
|
||||
|
||||
`overrides` is the only place a scene may depend on resolution. An entry has `when` (`dpi`: a list) and `set` (a
|
||||
map from element id to replacement properties; `id` and `type` cannot change). Legitimate uses:
|
||||
|
||||
- a heavier face or a different `threshold` for small type at 203 dpi;
|
||||
- a larger minimum type size at 203 dpi;
|
||||
- a logo asset prepared for one resolution;
|
||||
- a `dot` thickness for a hairline.
|
||||
|
||||
An override is not for repositioning the layout per printer. If a design needs that, it is two designs.
|
||||
|
||||
### 2.7 Versions and upgrade
|
||||
|
||||
- **Version 1 is frozen.** A `qqq-zpl-scene/1` source keeps its existing code path and its exact output bytes. A
|
||||
test corpus pins this (section 10). No new field is added to version 1, including `align` on a barcode, because
|
||||
published scenes already carry that word and would start printing differently.
|
||||
- **Version 2 is a separate package** in the renderer. The two share only the barcode encoders and the font
|
||||
rasteriser.
|
||||
- **Upgrade is an explicit act by an author, never automatic.** A new authoring action, "Convert layout to physical
|
||||
units", asks the renderer for a version 2 rendering of the draft's version 1 scene (new operation
|
||||
`UPGRADE_SCENE`, a pure function that returns the new source and a list of notes). It converts dots to
|
||||
millimetres with the template stock's dpi, turns `rasterText` into `text` with the same asset, turns a fitted
|
||||
barcode into a barcode box, and turns printer font `text` into `text` in the default bundled face with a note
|
||||
that the face changed. The action shows the two previews side by side and saves the result as the draft only.
|
||||
Publishing stays a separate human step. Nothing rewrites a stored revision.
|
||||
- A renderer that does not know version 2 answers a version 2 scene with a refusal, and the host reports
|
||||
`RENDERER_TOO_OLD` (section 11.3).
|
||||
|
||||
## 3. Text
|
||||
|
||||
### 3.1 Fonts
|
||||
|
||||
Version 2 has one kind of text: a TrueType face rasterised by the renderer. Printer font 0 is not offered, because
|
||||
the renderer cannot measure it or draw it, so it can be neither fitted nor previewed truthfully. Version 1 keeps
|
||||
its `text` element.
|
||||
|
||||
| Source | How it is named in a scene | Where the bytes live | Works without object storage |
|
||||
|---|---|---|---|
|
||||
| Bundled default set | `qqq-sans`, `qqq-sans-bold`, `qqq-condensed-bold`, `qqq-mono`, `qqq-mono-bold` | Inside the renderer jar and image, with licence files and hashes | Yes |
|
||||
| Built-in asset store | The asset's name in the template manifest | A new table owned by this QBit, bytes in the database (section 3.2) | Yes |
|
||||
| Record Files (as today) | The asset's name in the template manifest | Collaboration attachment storage | No |
|
||||
|
||||
The prefix `qqq-` is reserved: a version 2 scene whose manifest has an asset with that prefix is refused with
|
||||
`RESERVED_FONT_NAME`.
|
||||
|
||||
**The bundled set.** Five faces: a proportional sans in regular and bold, a condensed bold for long values on
|
||||
narrow labels, and a monospace in regular and bold for codes and human-readable lines. Selection criteria: real
|
||||
bold and condensed cuts (stroke weight comes from the face, not from a threshold; Forge's Abel needed
|
||||
`threshold` 220 to print dark enough), clear `0/O` and `1/l/I`, Latin Extended coverage, static TrueType outlines
|
||||
(the renderer accepts only `font/ttf`), a licence that permits bundling. Proposed: IBM Plex Sans (Regular, Bold),
|
||||
IBM Plex Sans Condensed (Bold) and JetBrains Mono (Regular, Bold). JetBrains Mono Bold already ships in
|
||||
`qbit-printing` and its OFL text was read there; the IBM Plex licence was not verified in this task and must be
|
||||
confirmed from the licence file of the exact release taken. Each face ships with its licence text, a provenance
|
||||
note and a SHA-256, and a test fails the build if any of the three is missing. Licence handling is decision 1 in
|
||||
section 12.
|
||||
|
||||
The same faces are also registered as CSS families for page documents (section 7).
|
||||
|
||||
### 3.2 Uploaded fonts in every environment
|
||||
|
||||
Today an uploaded font needs Record Files, Collaboration attachments and a bucket, and it cannot be seeded by a
|
||||
database migration. The design adds a store that needs only the database the QBit already has.
|
||||
|
||||
- **Table** `document_generation_asset_content`: `sha256` (unique), `media_type`, `length`, `bytes`, `file_name`,
|
||||
`rights_statement`, `created_by`, `create_date`. Limit 2 MiB per asset, the renderer's existing bound. Shipped as
|
||||
migration scripts for PostgreSQL, MySQL and H2 beside the existing ones; the host applies them (Forge writes its
|
||||
own changeset).
|
||||
- **Reference.** An asset row points at it with `fileVersionId = "dg:<sha256>"`. The bridge resolves that prefix
|
||||
from the built-in store itself and passes every other id to the host's reader as today. No host code is needed.
|
||||
- **Upload.** A new authoring action, "Upload font or image", takes a file through the existing `FILE_UPLOAD` field
|
||||
adornment, a name, and a required rights statement. Permission: `document-generation.configure`.
|
||||
- **Checks.** The host checks size and leading bytes only. The file is then sent to the isolated renderer
|
||||
(new operation `INSPECT_ASSET`), which parses it and returns family names, glyph count and the embedding
|
||||
permission bits. The application JVM never parses a font or an image. A font whose embedding bits forbid
|
||||
embedding is refused.
|
||||
- **Seeding.** Because the bytes are a database row, a host can seed a logo or a brand font with a migration, which
|
||||
is how Forge installs its setup data.
|
||||
- **When Record Files is absent** nothing is lost: selection lists the built-in store and the bundled faces. When
|
||||
it is present its released versions appear in the same list, as today.
|
||||
|
||||
This moves a boundary: the README says the QBit "does not own retained file bytes". That stays true for generated
|
||||
output. Template assets are definition data, like the scene source. This is decision 2 in section 12.
|
||||
|
||||
### 3.3 Size, fit and legibility
|
||||
|
||||
`size` is the em size as a length (`"9pt"`, `"3mm"`). `lineHeight` is a multiple of the size (default from the face
|
||||
metrics).
|
||||
|
||||
`fit` states what happens when the value does not fit the box:
|
||||
|
||||
| Property | Meaning | Default |
|
||||
|---|---|---|
|
||||
| `maxLines` | Wrap to at most this many lines | 1 |
|
||||
| `shrinkTo` | Smallest size the text may be reduced to | 70% of `size`, not below 5 pt |
|
||||
| `overflow` | `refuse` or `truncate`, applied when it still does not fit at the floor | `refuse` |
|
||||
|
||||
The order is fixed and stated: lay out at the nominal size within `maxLines`; if it does not fit, find the largest
|
||||
size down to the floor (0.25 pt steps) that fits within `maxLines`; if none fits, apply `overflow`. `truncate` cuts
|
||||
at a character boundary, appends an ellipsis and raises the warning `TEXT_TRUNCATED`. It is opt-in per element
|
||||
because a shortened identifier on a warehouse label can be misread; the default keeps the label from printing
|
||||
something different from the data.
|
||||
|
||||
`maxLength` (characters) declares the longest value a bound element must hold. Validation at publish lays out a
|
||||
worst-case string of that length (the widest glyph of the face, repeated) and refuses publication if it does not
|
||||
fit. At print time a value longer than `maxLength` is refused with `VALUE_TOO_LONG` before layout. Together these
|
||||
make a length refusal a design-time event. An element without `maxLength` raises the warning `FIT_NOT_PROVEN` at
|
||||
preview and publish.
|
||||
|
||||
Legibility on thermal heads:
|
||||
|
||||
- Glyphs are drawn antialiased and reduced to black and white at `threshold` (1 to 254, default 128). A higher
|
||||
value prints heavier. The default is not changed per resolution; an override may.
|
||||
- The renderer warns `TEXT_SMALL_FOR_DPI` when the capital height at the target is under 12 dots (about 6 pt at
|
||||
203 dpi), and `TEXT_LIGHT_FACE` when a regular-weight face is used with a capital height under 20 dots (about
|
||||
10 pt at 203 dpi). The numbers are starting values to be confirmed on the specimen label (section 10.6).
|
||||
- Guidance for the authoring guide: at 203 dpi use a bold face below 10 pt, keep text at or above 6 pt, prefer the
|
||||
condensed bold over shrinking.
|
||||
|
||||
## 4. Barcodes
|
||||
|
||||
### 4.1 Symbologies
|
||||
|
||||
Supported today: 71 ids (the OkapiBarcode families, four through Zint, Code 93i, Co-op 2 of 5). Fit boxes are
|
||||
qualified for 13: `code128`, `code39`, `code93`, `itf`, `gs1-128`, `qr`, `ean13`, `ean8`, `upca`, `upce`,
|
||||
`datamatrix`, `pdf417`, `aztec`.
|
||||
|
||||
Version 2 keeps the catalogue and the dynamic symbology allowlist. To add, in this order:
|
||||
|
||||
1. GS1 Data Matrix and GS1 QR as fit-qualified ids (`gs1-datamatrix`, `gs1-qr`). The encoders already accept a GS1
|
||||
data type as an option, but the fit profile admits default options only.
|
||||
2. SSCC-18 (`nve18` exists in the catalogue) and ITF-14 with bearer bars as fit-qualified ids.
|
||||
3. GS1 DataBar family fit qualification, when a label needs it.
|
||||
|
||||
### 4.2 GS1 application identifiers and the human-readable line
|
||||
|
||||
Today a host builds the bracketed element string and the caption itself (Forge's `EchoGs1`). Version 2 adds:
|
||||
|
||||
- `gs1`: a list of `{ "ai": "01", "valuePath": "/record/gtin" }` entries in place of `value`. The renderer builds
|
||||
the element string, checks each identifier's length and character set, checks the check digit of 00, 01 and 02,
|
||||
and places separators after variable-length fields. An unknown identifier or a bad value is the refusal
|
||||
`GS1_INVALID` with the identifier and a reason code. (What the encoder library already validates was not
|
||||
verified here; the builder must not duplicate it.)
|
||||
- `hri`: `{ "position": "below" | "above" | "none", "font": "qqq-mono", "size": "7pt", "fit": {...} }`. The line is
|
||||
drawn by the text engine inside the barcode element's box, so bars and caption are centred as one unit. For GS1
|
||||
it reads `(01)00012345678905(10)L240611A`. It uses the same fit rules as any text and may wrap between
|
||||
identifiers.
|
||||
|
||||
A plain `value` in bracket syntax keeps working, so the first release does not depend on the builder.
|
||||
|
||||
### 4.3 Module size, centring and quiet zones
|
||||
|
||||
- Bars are whole dots. The renderer picks the largest module, in dots, that fits the box on both axes including
|
||||
quiet zones, never smaller than `minModule` and never larger than `maxModule` if given.
|
||||
- `minModule` is physical. Defaults: 0.25 mm for linear symbologies and 0.375 mm for two-dimensional ones. That is
|
||||
2 and 3 dots at 203 dpi, 3 and 5 at 300 dpi, 6 and 9 at 600 dpi. These defaults are proposals to confirm on a
|
||||
printer (section 10.6).
|
||||
- For linear symbologies the bar height fills the box height (less the human-readable line) and no longer scales
|
||||
with the module. In version 1 the height scales with the module, so a short box caps the module.
|
||||
- The fitted symbol is placed in its box by `align` and `valign`. Left over dots are blank.
|
||||
- `quiet` is modules on each side, with the existing minimums (10 linear, 4 matrix). Quiet zones are inside the
|
||||
box and are never cropped. The warning `QUIET_ZONE_INTRUDED` fires when another element's ink lands in one.
|
||||
|
||||
### 4.4 When the data does not fit
|
||||
|
||||
The label never prints a code below its stated minimum module.
|
||||
|
||||
- If even `minModule` does not fit, the refusal is `BARCODE_DOES_NOT_FIT` with the dots needed at the minimum and
|
||||
the dots available. The message reads, for example: "Barcode 'code': the value needs 742 dots at the 2 dot
|
||||
minimum module; the box is 690 dots wide at 203 dpi."
|
||||
- An author who accepts the risk writes `"minModule": "1dot"`. Preview and publish then show the warning
|
||||
`BARCODE_MODULE_BELOW_RECOMMENDED` every time.
|
||||
- A later addition, not in the first round: `fallback`, an ordered list of alternative symbologies to try.
|
||||
|
||||
### 4.5 Print quality at 203 dpi
|
||||
|
||||
For the authoring guide, to be confirmed by the physical check:
|
||||
|
||||
- A module is 0.125 mm per dot. Use 2 dots or more for linear codes; 1 dot bars are at the limit of the head.
|
||||
- Print linear bars parallel to the feed direction (rotation 0 on a normally fed label). Bars across the feed lose
|
||||
edge quality at speed.
|
||||
- Keep the quiet zone clear; a centred code inside a wide box is the simplest way.
|
||||
- Prefer a two-dimensional symbol when the data is long and the label is short.
|
||||
|
||||
### 4.6 Verification by decoding
|
||||
|
||||
Every barcode test decodes what will be printed, not what the encoder returned: the test takes the emitted ZPL,
|
||||
rebuilds the bitmap from its graphic fields, and decodes it with ZXing (already a test dependency). It asserts the
|
||||
payload, the symbology, the module size in dots and the blank margins. This runs at 203, 300 and 600 dpi for each
|
||||
fit-qualified symbology, for short, typical and longest values.
|
||||
|
||||
## 5. Graphics
|
||||
|
||||
- **Image**: an asset (PNG or JPEG, as today) in a physical box. `fit` is `contain` (scale to the box, keep the
|
||||
ratio; default) or `none` (one image pixel per dot, as version 1). Scaling averages area and then reduces to
|
||||
black and white by `mode`: `threshold` (default, for line art and logos) or `dither` (for photographs).
|
||||
`IMAGE_UPSCALED` warns when a small image is enlarged.
|
||||
- **Box and line**: `box` with `thickness` (a length, at least 1 dot) and optional `fill`. A line is a box whose
|
||||
height equals its thickness.
|
||||
- **Reverse print**: `"reverse": true` on a text or box draws white on a black field the size of the box.
|
||||
- **Order**: elements paint in list order onto one canvas, so text over a filled box behaves as written.
|
||||
|
||||
**How version 2 reaches the printer.** The renderer composes the whole label on one 1-bit canvas at the target
|
||||
resolution and emits it as `^GFA` strips, trimmed to the rows and columns that hold ink. The output uses only
|
||||
commands the host output policy already allows, so `ZplOutputPolicy` needs no grammar change. This is the same
|
||||
method as the printing QBit's test label. The cost is size: a full 4 x 6 in label is about 250 KB of ZPL at 203 dpi,
|
||||
540 KB at 300 dpi and 2.2 MB at 600 dpi before trimming; a 4 x 1 in label is about 41 KB at 203 dpi. Section 12
|
||||
covers the consequences.
|
||||
|
||||
## 6. Preview inside the QBit
|
||||
|
||||
### 6.1 What the preview is
|
||||
|
||||
The preview is the print path stopped before retention. The same `IsolatedRenderer` renders the same revision
|
||||
content with the same context code, the host runs the same `ZplOutputPolicy`, and the picture is then decoded on
|
||||
the host **from the ZPL bytes that would be sent**. There is no second renderer and no parallel drawing code, so
|
||||
the preview cannot differ from the print for a version 2 scene.
|
||||
|
||||
```
|
||||
editor / record screen
|
||||
| template, draft fingerprint, sample name or record id, target dpi
|
||||
v
|
||||
DocumentPreviewService (foundation) authorise, build context, no rows written
|
||||
| PreviewRequest
|
||||
v
|
||||
IsolatedRenderer.preview (bridges/renderer, or the remote renderer adapter over it)
|
||||
| RENDER with diagnostics collected -> isolated renderer (remote service image)
|
||||
| <- ZPL bytes + diagnostics
|
||||
| ZplOutputPolicy.validate (unchanged)
|
||||
| ZplRaster: ^GFA and ^GB -> 1-bit bitmap -> PNG
|
||||
v
|
||||
Preview: PNG pages, exact flag, diagnostics, output size and hash
|
||||
```
|
||||
|
||||
- **Which component renders.** The isolated renderer, through whatever `IsolatedRenderer` the host configured (the
|
||||
remote renderer image in Forge). Never in process: the renderer README forbids adding the engine to the
|
||||
application JVM, and this design keeps that.
|
||||
- **Who makes the picture.** New class `ZplRaster` in `bridges/renderer`. It walks the already validated output and
|
||||
paints `^GFA` and `^GB` exactly. PNG encoding of our own bitmap is the only image work in the application JVM. A
|
||||
preview over 16 million dots is refused (`PREVIEW_TOO_LARGE`); a 4 x 6 in label at 600 dpi is 8.6 million.
|
||||
- **Version 1 scenes** can be previewed too. Graphics and boxes are exact. Printer font text cannot be drawn, so
|
||||
each `^A0N` field is shown as a hatched placeholder of its estimated size, the result carries `exact: false` and
|
||||
the warning `PRINTER_FONT_NOT_SHOWN`. A version 1 scene previews only at its stock's dpi.
|
||||
- **Refusals in preview.** The request asks the renderer to collect diagnostics instead of stopping at the first
|
||||
failure. Elements that failed are left out of the bitmap and reported with their boxes, and the result says
|
||||
`printable: false`. When there is no error, the ZPL is byte for byte what printing produces; a test asserts the
|
||||
hashes are equal.
|
||||
|
||||
### 6.2 Data for a preview
|
||||
|
||||
- **Sample data.** `samples` in the scene holds up to eight named context objects (64 KiB in total). They are
|
||||
written by the author and must be synthetic. The first is the default. They travel with the scene, so a seeded
|
||||
document previews on a fresh database.
|
||||
- **Stress.** "Longest values" replaces every bound value with the worst-case string for its `maxLength`.
|
||||
- **A real record.** The author chooses a source record, as in today's "Preview draft". The context is built the
|
||||
same way as for generation, including the pinned context script when the host has one.
|
||||
|
||||
### 6.3 API and permissions
|
||||
|
||||
- Port: `GenerationPorts.IsolatedRenderer.preview(PreviewRequest)`, a default method that refuses, implemented by
|
||||
`IsolatedRendererBridge` and delegated by `RemoteRendererBridge`. A host with its own adapter keeps compiling.
|
||||
- Service: `DocumentPreviewService.preview(templateId, draftFingerprint or published, format, data, targetDpi)`
|
||||
returns `Preview(pages, exact, printable, diagnostics, outputBytes, outputSha256)`.
|
||||
- It writes no revision, request, event or file. It logs one structured line (actor, template id, target, outcome,
|
||||
diagnostic codes) with no content.
|
||||
|
||||
| Preview of | Data | Permission |
|
||||
|---|---|---|
|
||||
| A draft | Sample or stress | `document-generation.configure` |
|
||||
| A draft | A real record | `document-generation.configure` and `.generate`, plus read access to that record, as today |
|
||||
| The published revision | Sample | `document-generation.view` |
|
||||
| The published revision | A real record | `document-generation.generate`, plus read access to that record |
|
||||
|
||||
No new permission name is needed.
|
||||
|
||||
### 6.4 How it appears, with no host code
|
||||
|
||||
Forge serves `qqq-frontend-next`. A QBit can show an image there today in three ways that need no frontend change:
|
||||
a `FILE_PREVIEW` field holding a `data:image/png` value (a thumbnail of at most 512 px that opens a lightbox), a
|
||||
composite widget with an `IMAGE` block (an inline `<img>` whose `path` may be a data URL, with width and height
|
||||
styles) and text blocks, or sanitised HTML. The content security policy allows `data:` images. The QBit already
|
||||
uses standard forms and adornments only; this design keeps to that for the first release.
|
||||
|
||||
**First release (existing components only):**
|
||||
|
||||
1. **On the template record screen**: a new section "Label preview" holding a composite widget
|
||||
(`QFieldSection.withWidgetName`). Its renderer class, in the foundation, calls `DocumentPreviewService` with the
|
||||
draft, the default sample and the stock's dpi, and returns an `IMAGE` block (the PNG as a data URL, shown at a
|
||||
fixed physical scale) followed by one text block per diagnostic. Opening a template shows its label. A
|
||||
template with no ZPL source shows a line saying so.
|
||||
2. **Action "Preview layout"** on a template: a form with the data choice (a sample, "longest values", or a
|
||||
record), the format and the resolution; then a result step that is the same composite widget, seeded from the
|
||||
process value of the same name, with the list of diagnostics beside the image. Running it again after an edit
|
||||
takes one click.
|
||||
3. The existing action is relabelled "Generate retained preview file" so the two are not confused. Its behaviour
|
||||
does not change.
|
||||
|
||||
The first task of that package is a spike in a running frontend to confirm that a seeded composite widget in a
|
||||
process step renders an `IMAGE` block from a data URL (the pieces were read in the frontend source, the
|
||||
combination was not run). The fallback, also already present, is a view form with a `FILE_PREVIEW` field and an
|
||||
HTML list.
|
||||
|
||||
**Second release (a `qqq-frontend-next` change):** a purpose-built preview component, in the frontend's existing
|
||||
pattern for QBit screens (`src/components/<qbit>/` plus a widget type): the source editor and the picture side by
|
||||
side, refresh on save, zoom, a resolution switch, and element boxes and quiet zones drawn over the picture from the
|
||||
diagnostics' coordinates. The backend contract is the same `Preview` value, so nothing in this repository changes
|
||||
for it.
|
||||
|
||||
**A host application** gets all of the above by registering the QBit as it does now. Forge adds help entries for
|
||||
the new process, fields and widget (its help coverage test requires them) and nothing else.
|
||||
|
||||
### 6.5 Page (PDF) templates
|
||||
|
||||
- Today's retained preview keeps working for PDF and stays the way to obtain the exact file.
|
||||
- Second release: the same "Preview layout" action for PDF. The frontend preview accepts a data URL only for
|
||||
images, so the isolated renderer rasterises the first pages of the PDF it just produced (PDFBox, at a stated
|
||||
screen resolution) and returns PNG pages through the same `Preview` value. The result is marked as page images of
|
||||
the exact PDF.
|
||||
|
||||
## 7. Templates and page layout beyond labels
|
||||
|
||||
**Today.** HTML with FreeMarker (autoescaped), paged CSS 2.1: stock size and margins, tables, repeating headers and
|
||||
footers, page breaks, absolute positioning, borders, images, TrueType assets, the `<qqq-barcode>` element with fit
|
||||
boxes. One starter, the packing slip. No flex or grid, no SVG, no script.
|
||||
|
||||
**What great means for page documents.**
|
||||
|
||||
- Default fonts without an upload: the bundled faces are available as CSS families (`'QQQ Sans'`, `'QQQ Sans
|
||||
Condensed'`, `'QQQ Mono'`).
|
||||
- A fast preview with sample data (section 6.5) and the same diagnostics list.
|
||||
- Starters that look finished: packing slip (exists), pick list, pallet content sheet, each with sample data.
|
||||
- Refusals that name the cause: an unknown asset, an image over the limits, more pages than allowed.
|
||||
|
||||
**In this round:** bundled CSS families; page preview images; refusal codes for the PDF path. **Out:** a visual
|
||||
designer, flex or grid layout, SVG, new starters beyond one, any change to the OpenHTML fork.
|
||||
|
||||
**Label starters.** A small library of version 2 scenes ships as resources, like the packing slip starter:
|
||||
GS1-128 on 4 x 1 in, a product label with text and a code on 3 x 2 in, a 4 x 6 in shipping layout, and two tools,
|
||||
a **type specimen** (each bundled face at 5 to 14 pt and several thresholds) and a **resolution ruler** (rulers
|
||||
drawn for 203, 300 and 600 dpi; the one that measures true tells the operator the printer's resolution).
|
||||
|
||||
## 8. Errors and diagnosis
|
||||
|
||||
### 8.1 Diagnostics
|
||||
|
||||
The renderer's answer gains a `diagnostics` list, and its error answer gains one diagnostic as `detail`. A
|
||||
diagnostic is closed vocabulary and numbers only:
|
||||
|
||||
```json
|
||||
{ "code": "TEXT_DOES_NOT_FIT", "severity": "ERROR", "element": "caption",
|
||||
"box": [24, 131, 764, 56], "measured": { "widthDots": 902, "sizeCentipoints": 700, "lines": 2 },
|
||||
"limit": { "widthDots": 764, "lines": 2 } }
|
||||
```
|
||||
|
||||
- `element` is the element's `id`, which the template author wrote and which is limited to
|
||||
`[A-Za-z][A-Za-z0-9_-]{0,31}`. No record value, context text or exception message is ever included. This keeps the
|
||||
rule the renderer has today (errors must not carry source data) while giving up the single opaque code.
|
||||
- The host turns a diagnostic into a sentence with the element, the measured value and the limit, in physical
|
||||
units as well as dots. `GenerationPorts.FailureCode` grows, and `RenderException` carries the diagnostic.
|
||||
|
||||
| Severity | Codes (first release) |
|
||||
|---|---|
|
||||
| ERROR | `SCENE_INVALID` (with the JSON pointer of the offending property), `STOCK_MISMATCH`, `TARGET_REQUIRES_SCENE_2`, `ELEMENT_OUTSIDE_PRINTABLE_AREA`, `TEXT_DOES_NOT_FIT`, `VALUE_MISSING`, `VALUE_TOO_LONG`, `FONT_UNKNOWN`, `FONT_MISSING_GLYPH`, `RESERVED_FONT_NAME`, `BARCODE_DOES_NOT_FIT`, `GS1_INVALID`, `ASSET_UNKNOWN`, `PREVIEW_TOO_LARGE`, `RENDERER_TOO_OLD` |
|
||||
| WARNING | `TEXT_TRUNCATED`, `TEXT_SMALL_FOR_DPI`, `TEXT_LIGHT_FACE`, `FIT_NOT_PROVEN`, `BARCODE_MODULE_BELOW_RECOMMENDED`, `QUIET_ZONE_INTRUDED`, `ELEMENTS_OVERLAP`, `IMAGE_UPSCALED`, `DEVICE_UNIT_USED`, `PRINTER_FONT_NOT_SHOWN` |
|
||||
| INFO | `TEXT_SHRUNK` (from and to size), `TEXT_WRAPPED` (lines), `BARCODE_MODULE` (dots and micrometres), `IMAGE_SCALED` |
|
||||
|
||||
Version 1 scenes keep their existing codes and the opaque `RENDER_FAILED`.
|
||||
|
||||
### 8.2 A document that is not offered for a printer
|
||||
|
||||
Whether a document can print on a printer has three owners, and the message is assembled from them:
|
||||
|
||||
| Part | Owner | What it provides |
|
||||
|---|---|---|
|
||||
| What the document needs | Document generation | New `DocumentAvailability.explain(table, format, target)`: for each published template, offered or not, with a reason code and both sizes |
|
||||
| What the printer has | Printing | The media profile the agent reports (width, height, dpi), as today |
|
||||
| Joining the two | The printing bridge in this repository (`bridges/printing`) | New `PrintableDocuments.forPrinter(...)`, so hosts stop writing the match themselves |
|
||||
| Showing it | The application screen (Echo in Forge) | Lists what is offered and states what is not and why |
|
||||
|
||||
With version 2 and a render target, resolution is no longer a reason; a 203 dpi printer and a 300 dpi printer take
|
||||
the same document. The remaining reasons are `STOCK_SIZE_MISMATCH` ("needs 4 x 1 in; the printer reports 4 x 2 in")
|
||||
and, for version 1 documents only, `RESOLUTION_MISMATCH` ("this older document was drawn for 300 dpi; the printer
|
||||
reports 203 dpi; convert it to physical units").
|
||||
|
||||
The scanner QBit holds no document logic (its base module was searched), and the Android client only shows what
|
||||
the server sends, so this needs no scanner or app release. The client's own wording for an empty list was not found and is not changed.
|
||||
|
||||
## 9. Security and data
|
||||
|
||||
- **Template source** is still interpreted only inside the isolated renderer. The version 2 parser, the asset
|
||||
inspector and the upgrade function all run there. The host's new code handles only bytes it already validated
|
||||
(`ZplRaster`) and bytes it stores (`document_generation_asset_content`).
|
||||
- **Uploads.** Fonts: TrueType only (as today), 2 MiB, leading bytes checked on the host, parsed in the renderer,
|
||||
embedding bits honoured, a rights statement required and stored. Images: PNG or JPEG, the existing dimension and
|
||||
pixel limits, SVG still refused. Assets are addressed by hash; identical bytes are stored once.
|
||||
- **Bundled fonts.** Unmodified, each with licence, provenance and hash, listed in `THIRD-PARTY.md` and `NOTICE`.
|
||||
- **No preview is stored.** No revision, request, event, retained file or log content. The PNG of a real-record
|
||||
preview exists in the response and, when shown through a process step, in that process's server-side state until
|
||||
it expires, as any process screen showing record data does. (That store's retention was not verified.) The record
|
||||
screen widget uses sample data only, so opening a template never renders customer data.
|
||||
- **Samples** are synthetic by rule, stated in the field help and the authoring guide.
|
||||
- **Diagnostics and logs** carry element ids and numbers only.
|
||||
- **Permissions** are the existing five; section 6.3 gives the mapping. Uploading and converting need `configure`.
|
||||
- **Parser hardening.** The version 2 scene parser and `ZplRaster` take untrusted input. Both get negative tests
|
||||
and a bounded mutation campaign (section 10.5).
|
||||
|
||||
## 10. Test strategy and coverage
|
||||
|
||||
### 10.1 Compatibility of version 1 (first, before any renderer change)
|
||||
|
||||
A corpus of version 1 scenes with the SHA-256 of their ZPL at 203, 300 and 600 dpi, generated from the tag Forge
|
||||
runs (`v1.1.0-RC.2`; the renderer sources are identical on `develop` today) and never regenerated. It contains the
|
||||
shapes stored in Forge's database (plain, scanner fidelity, compact GS1, the raster text document, with synthetic
|
||||
values), the README examples and one scene per element type and option. The test fails on any byte difference.
|
||||
|
||||
### 10.2 Golden images per resolution
|
||||
|
||||
For each version 2 fixture (every starter and one scene per feature) a PNG at 203, 300 and 600 dpi is committed.
|
||||
Barcode and box pixels are compared exactly everywhere. Text pixels depend on the Java runtime's rasteriser, so
|
||||
unit tests on a developer machine compare with a small tolerance and always assert structure (ink bounds inside
|
||||
the box, centring within one dot), and the exact comparison runs in the image qualification on the pinned runtime,
|
||||
the existing `*ImageQualification` pattern. A changed golden is reviewed as a picture in the pull request.
|
||||
|
||||
### 10.3 Decode tests
|
||||
|
||||
As section 4.6: decode the bitmap rebuilt from the emitted ZPL, per symbology, per resolution, per value length.
|
||||
The same rebuild is `ZplRaster`, so the preview code is exercised by every barcode test.
|
||||
|
||||
### 10.4 Property tests for fit
|
||||
|
||||
Seeded, deterministic generators (no clock, fixed seeds) over text, box, size, floor, lines and resolution assert:
|
||||
|
||||
- the result is either a layout whose ink is inside the box or a refusal whose measured value exceeds its limit;
|
||||
- ink is never clipped;
|
||||
- the chosen size is never below the floor and never above the nominal size;
|
||||
- a shorter string never gets a smaller size than a longer one in the same box;
|
||||
- a published `maxLength` implies no length refusal for any string up to that length in the tested alphabets;
|
||||
- for barcodes, the module is whole dots, at least the minimum, and the symbol decodes.
|
||||
|
||||
### 10.5 Negative and fuzz tests
|
||||
|
||||
Malformed scenes, lengths and assets; ZPL with wrong lengths for `ZplRaster`. A bounded mutation campaign over the
|
||||
scene parser and `ZplRaster` runs in the normal test phase, with its seeds, limits and replay command in
|
||||
`docs/security/fuzzing.md` (new), as the testing standard requires for parsers of untrusted input.
|
||||
|
||||
### 10.6 Physical check before a final release
|
||||
|
||||
Print the specimen, the ruler and the GS1 starter on a 203 dpi Zebra and a 300 dpi Zebra and scan them. This
|
||||
confirms the proposed defaults (minimum modules, small type thresholds) and is recorded with the release. An RC
|
||||
may reach dev before it; a final version may not. No agent can do this step.
|
||||
|
||||
### 10.7 Coverage
|
||||
|
||||
The testing standard requires 80% line coverage of changed lines and 100% for published libraries, per package.
|
||||
The repository today gates only `foundation` at 85% instructions.
|
||||
|
||||
- New packages (`com.kingsrook.qbits.renderer.scene2` and below, and the new foundation and bridge classes) are
|
||||
gated at 100% line coverage, with exclusions only by explicit marker and written reason.
|
||||
- JaCoCo is added to `renderer` and `bridges/renderer` with a bundle gate at the measured baseline, never lowered.
|
||||
- The `foundation` gate is not lowered.
|
||||
- Changed-line coverage of 80% is checked by the reviewer from the JaCoCo report; the shared Gitea workflow has no
|
||||
such gate that I could find.
|
||||
|
||||
### 10.8 Review
|
||||
|
||||
Every package goes through a pull request into `develop` with: the full `./mvnw verify` on the branch head with no
|
||||
skipped gate; an independent review by an agent that did not write it, covering correctness, silent failures and
|
||||
test adequacy; and the review focus listed for the package. James merges.
|
||||
|
||||
## 11. Repositories, versions and what Forge does
|
||||
|
||||
### 11.1 Order and versions
|
||||
|
||||
| Order | Repository | Change | Released as |
|
||||
|---|---|---|---|
|
||||
| 1 | `qbit-document-generation` | First slice (section B) | `1.4.0-RC.1` from a new `release/1.4` |
|
||||
| 2 | same | Renderer images built from that version | `qqq-document-renderer` and `qqq-remote-renderer`, tag `1.4.0-RC.1` |
|
||||
| 3 | `gg-forge`, `gg-forge-cd` | Pins, schema, one version 2 document on dev | Forge dev build |
|
||||
| 4 | `qbit-document-generation` | Follow-on packages | `1.4.0-RC.2` and later |
|
||||
| 5 | `qqq-frontend-next` | Purpose-built preview component | next `v1.0.0-RC.N` tag |
|
||||
| 6 | `gg-forge` | Remove workarounds, convert the standard documents | Forge dev, then staging |
|
||||
|
||||
`develop` is `1.4.0-SNAPSHOT` and the workflow names an RC from the branch, so the new line is `release/1.4`. The
|
||||
`release/1.1` line that Forge runs in production stays untouched for fixes. Only one release-branch merge may be in
|
||||
flight across QRun repositories.
|
||||
|
||||
### 11.2 Other repositories
|
||||
|
||||
| Repository | Needed for the first slice | Later |
|
||||
|---|---|---|
|
||||
| `qbit-printing` | Nothing. A label is opaque ZPL to it, and the default limit is 20 MiB. | Optional: move the resolution ruler into the built-in test documents. |
|
||||
| `qqq-print-agent` | Nothing. ZPL is written raw to the queue and never parsed. No agent release is needed for anything in this design. | It repeats the payload once per copy; for large 600 dpi labels and many copies that multiplies the spool size. |
|
||||
| `qqq-print-protocol` | Nothing. | Nothing. |
|
||||
| `qbit-mobile-scanners` and the Android client | Nothing. | Nothing. |
|
||||
| `qbit-record-files`, `qbit-collaboration` | Nothing. Record Files remains an optional asset source. | Nothing. |
|
||||
| `qqq` core | Nothing. The widget, block, adornment and section APIs used exist in the version Forge pins. | Nothing. |
|
||||
| `qqq-frontend-next` | Nothing. | The preview component (section 6.4). |
|
||||
|
||||
Nothing in this design is held back by a client or agent release.
|
||||
|
||||
### 11.3 Rollout rule for the renderer image
|
||||
|
||||
The bridge accepts only an exact renderer version string, and the new answers have new fields. To allow a rolling
|
||||
change:
|
||||
|
||||
- Bridge `1.4` accepts renderer `0.1.0` (today's answers) and `0.2.0` (new answers). With an old image, version 1
|
||||
printing continues and a version 2 scene or a preview is refused with `RENDERER_TOO_OLD`, which names the fix.
|
||||
- Renderer `0.2.0` is not accepted by bridges before `1.4`.
|
||||
- Therefore: upgrade the host library first, then the image. Never the reverse.
|
||||
|
||||
### 11.4 What Forge pins, adds and deletes
|
||||
|
||||
Pins and additions (first slice):
|
||||
|
||||
- The five document generation artifacts at `1.4.0-RC.1`; the two image digests in `gg-forge-cd`, after the host.
|
||||
- A changeset for the new request column (`target_dpi`). Later a changeset for
|
||||
`document_generation_asset_content`.
|
||||
- Help entries for the new process, fields, section and widget; the permission and composition lists its tests
|
||||
check.
|
||||
- `EchoDocumentGenerator` passes the printer's reported dpi as the render target.
|
||||
- One new setup-data changeset that seeds a version 2 GS1 document for 4 x 1 in, using a bundled face. Existing
|
||||
changesets are not edited.
|
||||
|
||||
Deletions, once the matching upstream piece is on dev and one label has printed:
|
||||
|
||||
| Forge workaround | Retired by | Condition |
|
||||
|---|---|---|
|
||||
| `EchoBundledFonts`, its font resources, test and script | Bundled faces in the renderer | No published revision still references the `forge-bundled-font:` asset. The 0050 document is republished by a new changeset as a version 2 scene with a bundled face; its old revision row stays but is never rendered again, because reprints use retained bytes. |
|
||||
| Hand geometry in `EchoTemplatePublisher` (dot conversion, insets, module search, the centred scene builder) and the duplicate scene builders in `scripts/local` | Version 2 scenes | Standard documents seeded as version 2 |
|
||||
| One document per resolution (0039 seeds 203 and 300 dpi copies) | Render target | New seeds carry one document per size; old rows remain editable data |
|
||||
| The exact stock match and silent drop in `EchoPrintingDestinations.resolve` and `EchoService.stockMatches` | `PrintableDocuments` in the printing bridge | Follow-on package |
|
||||
| Offline bitmaps in `docs/history` used to judge a layout | Preview | First slice |
|
||||
|
||||
Forge's `echoPublishDocument` process and the SQL that re-implements the draft fingerprint are not addressed here.
|
||||
A declarative import for documents would retire them and is worth its own design.
|
||||
|
||||
## 12. Risks and decisions
|
||||
|
||||
### Decisions for James
|
||||
|
||||
| # | Decision | Recommendation |
|
||||
|---|---|---|
|
||||
| 1 | **Bundled fonts and their licence.** The dependency standard's allowlist does not include the SIL Open Font License 1.1, yet `qbit-printing` already ships JetBrains Mono under it and Forge ships Abel under it, with no recorded exception. | Record one exception for unmodified OFL 1.1 fonts shipped as data, covering printing's existing font and the renderer's set. Bundle IBM Plex Sans (Regular, Bold), IBM Plex Sans Condensed (Bold) and JetBrains Mono (Regular, Bold), after confirming each licence file. The alternative with no exception is to restrict the set to fonts published under Apache 2.0. |
|
||||
| 2 | **Asset bytes in the QBit's own table.** Fonts and logos up to 2 MiB stored in the database, so upload and seeding work everywhere. It moves the stated boundary that the QBit owns no file bytes. | Yes. Assets are definition data. Record Files stays as an optional second source. |
|
||||
| 3 | **Version 2 prints the whole label as a bitmap and offers no printer font.** This is what makes preview exact and fit measurable. It makes jobs larger (section 5) and gives up printer-drawn text. | Yes. It is how the printing test label already works. Add compression only if 600 dpi job size proves a problem; that would mean widening the host output policy. |
|
||||
| 4 | **Release line.** A new `release/1.4` for this work, leaving `release/1.1` for production fixes, with the host-first rollout rule of section 11.3. Production later moves from the 1.1 line to the 1.4 line. | Yes. |
|
||||
| 5 | **Renderer images.** They are built and pushed by hand to `ghcr.io/gg-engineering`, which is the slowest step between a merged change and dev. | Add a build job for them to this repository's CI in the follow-on, and decide whether QRun images belong in a QRun registry. Not required for the first slice. |
|
||||
|
||||
### Decided in this design
|
||||
|
||||
- Version 1 is frozen; version 2 is a separate schema id and code path; upgrade is an explicit authoring action.
|
||||
- Pull request 11 is replaced, not merged (see below).
|
||||
- Lengths are strings with a unit; coordinates are relative to the printable area; nine-point anchors plus
|
||||
`align` and `valign`; `group` is in, rows and tables are out.
|
||||
- Default text fit is one line, shrink to 70%, then refuse; truncation is opt-in; `maxLength` makes fit provable at
|
||||
publish.
|
||||
- The barcode never prints below its stated minimum module; the default refuses.
|
||||
- The preview picture is decoded on the host from the validated ZPL; the renderer does not draw a second image.
|
||||
- The first preview UI uses components the frontend already has; the purpose-built component follows.
|
||||
- Resolution is a render target chosen at print or preview time; flexible stock size comes later.
|
||||
- Structured diagnostics replace the opaque failure for version 2, carrying ids and numbers only.
|
||||
|
||||
### Pull request 11
|
||||
|
||||
PR 11 ("align a fitted ZPL barcode inside its fit box; justified font 0 text blocks") changes version 1 in place.
|
||||
|
||||
- Its barcode half is sound and its arithmetic and decode tests are carried into version 2, where every element
|
||||
has `align` and `valign`. It is not applied to version 1, because published scenes that already carry `align` on
|
||||
a barcode would begin to print differently.
|
||||
- Its text half emits `^FB` field blocks. The host output policy (`ZplOutputPolicy.text`) requires `^FH_^FD`
|
||||
directly after the font command and rejects anything else, and the PR does not change the bridge. Through the
|
||||
bridge Forge uses, every label with a justified text block would be refused. It also keeps the character-count
|
||||
estimate and relies on the printer to centre, which cannot be previewed.
|
||||
|
||||
So the design absorbs the idea and replaces the PR. Its tests move into the version 2 barcode package, and the PR
|
||||
is closed when that package merges. Forge's unused `zplGs1CentredScene`, which targets PR 11, is deleted with the
|
||||
other hand geometry.
|
||||
|
||||
### Risks
|
||||
|
||||
| Risk | Mitigation |
|
||||
|---|---|
|
||||
| Text rasterisation differs between Java builds, so goldens flap | Exact comparison only on the pinned runtime; structural assertions elsewhere (10.2) |
|
||||
| Proposed module and type defaults are wrong for real media | Physical check before a final version (10.6); defaults are data in one place |
|
||||
| Larger ZPL exceeds a host limit (Forge sets a 1 MiB output limit) or slows a 600 dpi printer | Ink trimming; documented sizes; the limit is host configuration; compression held in reserve (decision 3) |
|
||||
| Host and image versions out of step | Section 11.3 rule and the named `RENDERER_TOO_OLD` refusal |
|
||||
| The seeded composite widget does not render as read | Spike first; `FILE_PREVIEW` fallback (6.4) |
|
||||
| The record screen widget renders on every open | Renderer admission already bounds concurrency; the widget uses sample data and can be collapsed |
|
||||
| Scope: the plan is large | The first slice is seven packages; everything else is independent and follows |
|
||||
| Manual image builds delay dev | Decision 5 |
|
||||
|
||||
---
|
||||
|
||||
# B. Work plan
|
||||
|
||||
All packages are in `qbit-document-generation` unless a repository is named. Each is one pull request into
|
||||
`develop`. Branch names never start with `release/`. Sizes: S about a day, M two to three days, L about a week of
|
||||
agent work including review.
|
||||
|
||||
## B.1 Shared contracts (so packages can be built in parallel)
|
||||
|
||||
**Renderer wire (protocol id unchanged, renderer version `qqq-renderer-0.2.0`).**
|
||||
|
||||
- `RENDER` and `VALIDATE` accept optional `"targetDpi"` and `"diagnostics": "COLLECT"`.
|
||||
- A successful answer adds `"diagnostics": [ ... ]` (section 8.1). With `COLLECT` and at least one error, the
|
||||
outcome is `"REFUSED"`, with `diagnostics` and the partial output.
|
||||
- An error answer adds `"detail": { ... }`, one diagnostic.
|
||||
- New operations, each routed by `RendererMain` to one class: `INSPECT_ASSET` (`AssetInspector`), `UPGRADE_SCENE`
|
||||
(`scene2.upgrade.SceneUpgrade`). P1 creates both as classes that refuse with `UNSUPPORTED_OPERATION`.
|
||||
|
||||
**Renderer element contract (package `com.kingsrook.qbits.renderer.scene2`, owned by P1).**
|
||||
|
||||
- `Length` (parse, micrometres, dots by rule), `Frame` (a resolved box in dots), `Layout` (anchor resolution),
|
||||
`Canvas` (1-bit, paint order, reverse), `Diagnostics` (collector), `SceneElement` with
|
||||
`Frame place(Layout)` and `void paint(Canvas, Frame, RenderInput, Diagnostics)`, `ElementFactory` keyed by `type`.
|
||||
- P2, P3 and P4 each add one sub-package and register one factory in a file they own
|
||||
(`scene2/text/TextFactory`, `scene2/barcode/BarcodeFactory`, `scene2/graphics/GraphicsFactory`); P1 lists the
|
||||
three class names in `ElementFactory` from the start, with placeholders that refuse.
|
||||
|
||||
**Foundation ports (owned by P6a).** `GenerationPorts.Diagnostic`, `PreviewRequest`, `PreviewPage`, `Preview`, the
|
||||
new `FailureCode` values, `RenderException(FailureCode, Diagnostic)`, `IsolatedRenderer.preview` as a refusing
|
||||
default, `Integer targetDpi` on `RenderRequest`. P6a also adds the registration calls for
|
||||
`GenerationPreviewProcesses`, `GenerationAssetProcesses`, `GenerationUpgradeProcesses` and `GenerationAssetTables`
|
||||
in the producer, and the call to `GenerationPreviewWidget.section(table)` in `GenerationTables`, each an empty
|
||||
class or no-op, so later packages fill only their own file.
|
||||
|
||||
## B.2 Packages
|
||||
|
||||
### First slice
|
||||
|
||||
| Id | Package | Branch | Size | Depends on |
|
||||
|---|---|---|---|---|
|
||||
| P0 | Version 1 compatibility corpus | `test/v1-compat-corpus` | S | none |
|
||||
| P13 | Coverage gates and fuzz scaffolding | `test/coverage-and-fuzz-gates` | S | none |
|
||||
| P6a | Ports and registration hooks | `feat/preview-ports` | S | none |
|
||||
| P1 | Scene 2 core, canvas, emitter, diagnostics | `feat/scene2-core` | L | P0, P13 |
|
||||
| P2 | Text: bundled fonts, measurement, fit | `feat/scene2-text` | L | P1 |
|
||||
| P3a | Barcode: module fit, alignment, decode tests | `feat/scene2-barcode-fit` | M | P1 |
|
||||
| P5 | Bridge: `ZplRaster`, diagnostics, preview, version rule | `feat/bridge-preview` | M | P6a |
|
||||
| P6b | Preview service, action and record widget | `feat/preview-ui` | M | P6a (P5 for the integration test) |
|
||||
| P7 | Render target dpi | `feat/render-target-dpi` | M | P6a |
|
||||
|
||||
**P0. Version 1 compatibility corpus.**
|
||||
Scope: section 10.1. Files: new tests and resources only, under `renderer/src/test` and `bridges/renderer/src/test`
|
||||
(`ZplSceneOneCompatibilityTest`, `resources/compat-v1/`). Tests: the corpus itself, run against untouched code,
|
||||
plus proof that each stored ZPL passes `ZplOutputPolicy`. Review focus: the corpus covers every version 1 element,
|
||||
option and the Forge scene shapes; values are synthetic; hashes come from the tagged source, not from the branch.
|
||||
|
||||
**P13. Coverage gates and fuzz scaffolding.**
|
||||
Scope: section 10.7 and 10.5 scaffolding. Files: `renderer/pom.xml`, `bridges/renderer/pom.xml` (JaCoCo with a
|
||||
per-package rule for new packages and a baseline bundle rule), `docs/security/fuzzing.md`, a seeded mutation test
|
||||
harness class in each module's test tree. This package is the only one that edits those two `pom.xml` files in the
|
||||
first slice. Review focus: gates fail when they should (prove with a deliberate miss), no skip switches.
|
||||
|
||||
**P6a. Ports and registration hooks.**
|
||||
Scope: B.1 foundation contract. Files: `foundation/.../GenerationPorts.java`, `DocumentGenerationQBitProducer.java`
|
||||
and `GenerationTables.java` (registration calls only), five new empty classes. Tests: record validation, default
|
||||
refusals, source compatibility of existing constructors. Review focus: nothing breaks an existing host adapter; diagnostics cannot hold free text.
|
||||
|
||||
**P1. Scene 2 core.**
|
||||
Scope: sections 2, 5 (box, canvas, emission), 8.1 for the renderer; `RendererMain` routing by schema and for the
|
||||
new operations; renderer version `0.2.0`; `renderer/schema/zpl-scene-2.schema.json`; `box` and `group` elements;
|
||||
`overrides`; `samples` accepted and ignored by rendering. Files: new package `scene2`; `RendererMain.java`,
|
||||
`Wire.java` and `RenderInput.java` (target dpi, bundled-name reservation hook). `ZplRenderer.java`,
|
||||
`RasterText.java` and `BarcodeFit.java` are not edited. Tests: unit tests for every length and rounding rule,
|
||||
anchor resolution for all nine anchors and negative shifts, row-band emission (the rebuilt bitmap equals the
|
||||
canvas), goldens for box scenes at three resolutions, negative tests for the parser, P0 still green, 100% line
|
||||
coverage of the package. Review focus: rounding rules match section 2.2 exactly; no path from context values into
|
||||
diagnostics; emitted ZPL passes the unchanged `ZplOutputPolicy`; limits on elements, depth and canvas size.
|
||||
|
||||
**P2. Text.**
|
||||
Scope: section 3.1 (bundled set and reserved names), 3.3 (fit, `maxLength`, legibility warnings), reverse text,
|
||||
rotation. Files: `scene2/text/*`; `renderer/src/main/resources/fonts/**` with licence, provenance and hash files;
|
||||
`renderer/THIRD-PARTY.md`, `renderer/NOTICE`. Tests: property tests of section 10.4; goldens; glyph coverage
|
||||
refusal; a test that every bundled face has licence, provenance and a matching hash; worst-case proof for
|
||||
`maxLength`. Review focus: the fit order is exactly as stated; truncation only when asked; licences confirmed from
|
||||
files; determinism (no locale, no installed fonts).
|
||||
|
||||
**P3a. Barcode fit and alignment.**
|
||||
Scope: sections 4.3, 4.4, 4.6 for the 13 fit-qualified symbologies, with `value` and `valuePath`, dynamic
|
||||
symbology allowlist and scanner profile carried over. Files: `scene2/barcode/*` (new `ModuleFit`; the version 1
|
||||
`BarcodeFit` is called, not changed). The alignment tests of PR 11 are ported here. Tests: decode tests at three
|
||||
resolutions for short, typical and longest values; centring within one dot; refusal content; below-minimum warning.
|
||||
Review focus: no code prints below the stated minimum; quiet zones never cropped; integer arithmetic only.
|
||||
|
||||
**P5. Bridge preview.**
|
||||
Scope: sections 6.1, 6.3 (port implementation), 11.3. Files: `bridges/renderer/.../ZplRaster.java` (new),
|
||||
`IsolatedRendererBridge.java` (diagnostics parsing, accepted versions, `preview`, target dpi in the request and in
|
||||
the stock passed to the policy), `RendererJson.java`; `bridges/remote-renderer/adapter/.../RemoteRendererBridge.java`
|
||||
(delegate). `ZplOutputPolicy.java` grammar is not changed. Tests: raster of every corpus ZPL from P0; refusal of
|
||||
malformed graphics; the size limit; old-image behaviour (`RENDERER_TOO_OLD`); print and preview hashes equal;
|
||||
mutation campaign over `ZplRaster`. Review focus: only validated bytes are rasterised; no font or image decoding on
|
||||
the host; error mapping stays closed vocabulary; the version rule.
|
||||
|
||||
**P6b. Preview service and UI.**
|
||||
Scope: sections 6.2 to 6.4 first release. Files: new `DocumentPreviewService.java`,
|
||||
`GenerationPreviewProcesses.java`, `GenerationPreviewWidget.java` (including the "Label preview" section it
|
||||
attaches to the template); `GenerationAuthoringProcesses.java` (the relabel only); help text and labels for every
|
||||
new field. It begins with the frontend
|
||||
spike of section 6.4. Tests: permission matrix of section 6.3; nothing written to any table (assert row counts);
|
||||
sample, stress and record data paths with a fake renderer; diagnostics to sentences; one browser check in the
|
||||
host's local stack. Review focus: no persistence and no content in logs; record access checked before context is
|
||||
built; messages name element, measured value and limit.
|
||||
|
||||
**P7. Render target dpi.**
|
||||
Scope: section 2.3. Files: `DocumentGenerationService.java`, `GenerationStore.java`, `GenerationProcesses.java`
|
||||
(option on generate), `GenerationTables.java` (the request field), `DocumentGenerationSchema.java`, three
|
||||
migration scripts, `docs/EXPECTED-PRINT-INTENT.md`;
|
||||
`bridges/printing/.../PrintingDispatch.java` only if it must carry the value. Tests: digest framing (absent value
|
||||
keeps old digests; present value changes them); refusal for version 1; MySQL, PostgreSQL and H2 suites; reprint
|
||||
unchanged. Review focus: old rows and old digests are untouched; the target is validated against 203, 300, 600.
|
||||
|
||||
### Follow-on
|
||||
|
||||
| Id | Package | Branch | Repository | Size | Depends on |
|
||||
|---|---|---|---|---|---|
|
||||
| P3b | GS1 builder and human-readable line | `feat/scene2-gs1-hri` | this | M | P2, P3a |
|
||||
| P4 | Graphics: scaled images, dither, reverse box | `feat/scene2-graphics` | this | M | P1 |
|
||||
| P8 | Built-in asset store and upload | `feat/asset-store` | this | L | P6a, P1 |
|
||||
| P9 | Version 1 to 2 conversion | `feat/scene-upgrade` | this | M | P2, P3a, P6b |
|
||||
| P10 | Document availability and printer match | `feat/printable-documents` | this | M | P7 |
|
||||
| P11 | Page documents: bundled CSS families, page preview | `feat/pdf-fonts-preview` | this | M | P2, P5, P6b |
|
||||
| P12 | Starters, specimen and ruler | `feat/label-starters` | this | S | P2, P3a |
|
||||
| P14 | Authoring guide and README | `docs/label-authoring` | this | S | first slice |
|
||||
| P15 | Flexible stock (`atLeast`) | `feat/flexible-stock` | this | M | P10 |
|
||||
| P16 | Renderer image build in CI | `ci/renderer-images` | this | S | decision 5 |
|
||||
| F1 | Purpose-built preview component | `feat/document-preview` | `qqq-frontend-next` | L | P6b released |
|
||||
| G1 | Forge: pins, schema, one version 2 document on dev | per Forge rules | `gg-forge`, `gg-forge-cd` | M | `1.4.0-RC.1` and images |
|
||||
| G2 | Forge: remove workarounds, convert standard documents | per Forge rules | `gg-forge` | M | G1, P9, P10 |
|
||||
|
||||
Notes for the follow-on packages:
|
||||
|
||||
- **P3b** files: `scene2/barcode/gs1/*`, `scene2/barcode/Hri.java`. Tests: identifier table cases, check digits,
|
||||
separator placement decoded back, caption wraps between identifiers. Review focus: do not duplicate what the
|
||||
encoder already validates.
|
||||
- **P4** files: `scene2/graphics/*`. Tests: goldens, upscaling warning, pixel limits.
|
||||
- **P8** files: `GenerationAssetTables.java`, `GenerationAssetStore.java`, `GenerationAssetProcesses.java`,
|
||||
`GenerationAssetChoices.java`, three migration scripts, `renderer/.../AssetInspector.java`, and the `dg:` branch
|
||||
in `IsolatedRendererBridge.resolve` (coordinate with P5's owner; it is one method). Tests: upload limits and
|
||||
refusals, hash addressing, permission, selection listing, the three databases. Review focus: no parsing on the
|
||||
host; rights statement required; bytes never leave through a query API.
|
||||
- **P9** files: `scene2/upgrade/SceneUpgrade.java`, `GenerationUpgradeProcesses.java`. Tests: each corpus scene
|
||||
converts, and the converted scene's graphics match the original within one dot.
|
||||
- **P10** files: `DocumentAvailability.java` (foundation), `bridges/printing/.../PrintableDocuments.java`.
|
||||
- **P11** files: `PdfRenderer.java` and a new page rasteriser class in the renderer; the PDF branch of the preview.
|
||||
- **P14** integrates each package's own notes (written under `docs/labels/` by that package) into
|
||||
`renderer/README.md` and `docs/AUTHORING.md`, which no other package edits.
|
||||
|
||||
## B.3 First on dev
|
||||
|
||||
The smallest set that puts a real improvement on dev is the first slice: P0, P13, P6a, P1, P2, P3a, P5, P6b, P7.
|
||||
It delivers physical-unit layout, anchors and alignment, measured text with fit rules and bundled fonts, centred
|
||||
whole-dot barcodes that never go below their minimum, structured refusals, one design for every resolution, and a
|
||||
preview on the template screen.
|
||||
|
||||
```
|
||||
P0 ----+
|
||||
P13 ---+--> P1 --+--> P2 ---+
|
||||
+--> P3a --+
|
||||
P6a ---+--> P5 -------------+--> release/1.4 -> 1.4.0-RC.1 -> images -> G1 (Forge dev)
|
||||
+--> P6b ------------+
|
||||
+--> P7 -------------+
|
||||
```
|
||||
|
||||
P0, P13 and P6a start together. P1 follows; P5, P6b and P7 need only P6a and run beside it. P2 and P3a start when
|
||||
P1 merges. Then: one merge of `develop` into `release/1.4`, the two images built from `1.4.0-RC.1`, and Forge's G1
|
||||
(host pins first, image digests second). The acceptance for the slice is one version 2 GS1 label, previewed in
|
||||
Forge on dev, then printed on the dev printer at its reported resolution and scanned.
|
||||
|
||||
What follows, in value order: P3b and P12 (GS1 done properly, starters and the ruler), P8 (uploads everywhere),
|
||||
P9 with G2 (convert the standard documents and delete the Forge workarounds), P10 (say why a document is not
|
||||
offered), P4, P11, P14, F1, P15, P16.
|
||||
@@ -0,0 +1,70 @@
|
||||
# Parser fuzzing
|
||||
|
||||
## Scope and properties
|
||||
|
||||
K22-TEST-25 applies: this repository parses untrusted input at two boundaries. Templates are written by users,
|
||||
and the isolated renderer is treated as compromisable, so its output is untrusted to the host.
|
||||
|
||||
| Target | Module | Input | Campaign |
|
||||
|---|---|---|---|
|
||||
| Version 1 scene parser, `ZplRenderer.validate` | `renderer` | A `qqq-zpl-scene/1` source | `MutationCampaignTest.theVersionOneSceneParserAcceptsOnlyVersionOneScenes` |
|
||||
| Host printer gate, `ZplOutputPolicy.validate` | `bridges/renderer` | ZPL bytes returned by the worker | `MutationCampaignTest.theHostPrinterGateAcceptsOnlyTheRendererCommandSet` |
|
||||
|
||||
The harness is `MutationCampaign`, one copy in each module's test tree (the modules share no test code). It
|
||||
mutates valid inputs from the version 1 compatibility corpus (`renderer/src/test/resources/compat-v1`): bit
|
||||
flips, byte and range edits, truncation, duplication and tokens of the format spliced in. Each campaign checks
|
||||
unsafe acceptance, not only crashes:
|
||||
|
||||
- **Scene parser.** An accepted input, read again by a second and differently configured JSON parser, is a
|
||||
version 1 scene of known element types within the element limit. Any exception is a refusal, because the
|
||||
worker turns every exception into its opaque error answer. A stack overflow or a failed acceptance check is a
|
||||
finding.
|
||||
- **Printer gate.** An accepted input contains only the commands the renderer may emit and no tilde command.
|
||||
A refusal is the gate's `IllegalArgumentException`, or the strict decoder's `CharacterCodingException` for
|
||||
field text that is not UTF-8. Any other failure, or a failed acceptance check, is a finding.
|
||||
|
||||
Each campaign also asserts that it reached both acceptance and refusal, so a campaign that only ever refuses
|
||||
cannot pass.
|
||||
|
||||
This is seeded generated-input fuzzing, not coverage-guided instrumentation. Do not claim OSS-Fuzz or
|
||||
ClusterFuzzLite enrolment.
|
||||
|
||||
## Running and replaying
|
||||
|
||||
The campaigns run in the normal test phase, so every `./mvnw verify`, and therefore every CI build of a pull
|
||||
request or a push, runs them. No network, clock or unseeded randomness is used: a seed and an iteration
|
||||
number determine the input.
|
||||
|
||||
```sh
|
||||
# What CI runs: seeds 20261111 and 7919, 20000 iterations each, per target.
|
||||
./mvnw -B -pl renderer,bridges/renderer -am verify
|
||||
|
||||
# Replay a finding, or run a longer campaign before a MINOR or MAJOR release (both seeds at 100000).
|
||||
./mvnw -B -pl renderer -am test -Dtest=MutationCampaignTest -Dsurefire.failIfNoSpecifiedTests=false -Dfuzz.seed=20261111 -Dfuzz.iterations=100000
|
||||
./mvnw -B -pl bridges/renderer -am test -Dtest=MutationCampaignTest -Dsurefire.failIfNoSpecifiedTests=false -Dfuzz.seed=20261111 -Dfuzz.iterations=100000
|
||||
```
|
||||
|
||||
A failure lists each finding as `Finding[seed, iteration, failure]`. `MutationCampaign.input(seed, iteration)`
|
||||
returns that exact input against the same checkout. Reduce it to a named regression test beside the parser's
|
||||
other tests, fix the parser, and rerun both seeds. Report a suspected vulnerability privately rather than in a
|
||||
public issue.
|
||||
|
||||
Limits: inputs are at most 1 MiB, a campaign is at most 100000 iterations, and the corpus entries used are
|
||||
under 20 KiB. The harness writes no files, launches no process and reads no credentials. Generated ZPL is never
|
||||
sent to a printer and generated scenes are only validated, not rendered.
|
||||
|
||||
## Adding a target
|
||||
|
||||
A new parser of untrusted input adds one test method to the `MutationCampaignTest` of its module, with a
|
||||
corpus of valid inputs, a dictionary of the format's tokens, the refusal it declares and an independent check
|
||||
of what it accepts, and adds a row to the table above. The version 2 scene parser and `ZplRaster` are the next
|
||||
two targets.
|
||||
|
||||
## Review record
|
||||
|
||||
- **Added:** 2026-11-11, with the two campaigns above.
|
||||
- The first run of the printer gate campaign showed the `CharacterCodingException` refusal, which the property
|
||||
had not declared. It is a refusal, not a defect; the property now names it.
|
||||
- Not yet done: a weekly long campaign and the `docs/security/assurance.json` record that K22-TEST-25 also asks
|
||||
for. The long campaign is the manual command above until a scheduled job exists.
|
||||
- Reassess the targets when a parser boundary changes.
|
||||
@@ -48,6 +48,22 @@
|
||||
<execution><id>coverage</id><phase>verify</phase><goals><goal>check</goal></goals><configuration><rules><rule><element>BUNDLE</element><limits>
|
||||
<limit><counter>INSTRUCTION</counter><value>COVEREDRATIO</value><minimum>0.85</minimum></limit>
|
||||
<limit><counter>CLASS</counter><value>COVEREDRATIO</value><minimum>0.90</minimum></limit>
|
||||
</limits></rule>
|
||||
<!-- Classes added since the label layout design (section 10.7) are held to 100% line coverage from their first commit. A pattern matches nothing until its class exists,
|
||||
so a later package only adds its class here if the design did not already name it. The BUNDLE rule above is unchanged and is never lowered. -->
|
||||
<rule><element>CLASS</element><includes>
|
||||
<include>com.kingsrook.qbits.documentgeneration.GenerationPorts.Diagnostic*</include>
|
||||
<include>com.kingsrook.qbits.documentgeneration.GenerationPorts.Preview*</include>
|
||||
<include>com.kingsrook.qbits.documentgeneration.GenerationPreviewProcesses*</include>
|
||||
<include>com.kingsrook.qbits.documentgeneration.GenerationPreviewWidget*</include>
|
||||
<include>com.kingsrook.qbits.documentgeneration.GenerationAssetProcesses*</include>
|
||||
<include>com.kingsrook.qbits.documentgeneration.GenerationAssetTables*</include>
|
||||
<include>com.kingsrook.qbits.documentgeneration.GenerationAssetStore*</include>
|
||||
<include>com.kingsrook.qbits.documentgeneration.GenerationUpgradeProcesses*</include>
|
||||
<include>com.kingsrook.qbits.documentgeneration.DocumentPreviewService*</include>
|
||||
<include>com.kingsrook.qbits.documentgeneration.DocumentAvailability*</include>
|
||||
</includes><limits>
|
||||
<limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>1.00</minimum></limit>
|
||||
</limits></rule></rules></configuration></execution>
|
||||
</executions></plugin>
|
||||
<plugin>
|
||||
|
||||
+5
-1
@@ -24,6 +24,7 @@ package com.kingsrook.qbits.documentgeneration;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Properties;
|
||||
import java.util.stream.Stream;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.MetaDataProducerMultiOutput;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
|
||||
@@ -138,7 +139,7 @@ public class DocumentGenerationQBitProducer implements QBitMetaDataProducer<Docu
|
||||
QBitMetaData bit = getQBitMetaData();
|
||||
instance.addQBit(bit);
|
||||
MetaDataProducerMultiOutput output = new MetaDataProducerMultiOutput();
|
||||
GenerationTables.tables(config).forEach(table ->
|
||||
Stream.concat(GenerationTables.tables(config).stream(), GenerationAssetTables.tables(config).stream()).forEach(table ->
|
||||
{
|
||||
table.setSourceQBitName(bit.getName());
|
||||
output.add(table);
|
||||
@@ -146,6 +147,9 @@ public class DocumentGenerationQBitProducer implements QBitMetaDataProducer<Docu
|
||||
output.addSelfToInstance(instance);
|
||||
GenerationProcesses.register(instance, config.getSourceTables());
|
||||
GenerationAuthoringProcesses.register(instance, config);
|
||||
GenerationPreviewProcesses.register(instance, config);
|
||||
GenerationAssetProcesses.register(instance, config);
|
||||
GenerationUpgradeProcesses.register(instance, config);
|
||||
return (new MetaDataProducerMultiOutput());
|
||||
}
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
package com.kingsrook.qbits.documentgeneration;
|
||||
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
|
||||
|
||||
/*******************************************************************************
|
||||
** Processes that upload and manage built-in template assets such as fonts.
|
||||
** The producer already calls this registration point; it registers nothing yet.
|
||||
*******************************************************************************/
|
||||
final class GenerationAssetProcesses
|
||||
{
|
||||
/*******************************************************************************
|
||||
** Metadata namespace.
|
||||
*******************************************************************************/
|
||||
private GenerationAssetProcesses()
|
||||
{
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** Called once by the producer after the generation and authoring processes.
|
||||
*******************************************************************************/
|
||||
static void register(QInstance instance, DocumentGenerationQBitConfig config) throws QException
|
||||
{
|
||||
}
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
package com.kingsrook.qbits.documentgeneration;
|
||||
|
||||
import java.util.List;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
||||
|
||||
/*******************************************************************************
|
||||
** Tables of the built-in asset store. The producer already registers whatever
|
||||
** this returns, with the QBit's own tables; it returns none yet.
|
||||
*******************************************************************************/
|
||||
final class GenerationAssetTables
|
||||
{
|
||||
/*******************************************************************************
|
||||
** Metadata namespace.
|
||||
*******************************************************************************/
|
||||
private GenerationAssetTables()
|
||||
{
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** Complete table metadata, on the configured backend, for the producer to add.
|
||||
*******************************************************************************/
|
||||
static List<QTableMetaData> tables(DocumentGenerationQBitConfig config)
|
||||
{
|
||||
return (List.of());
|
||||
}
|
||||
}
|
||||
+230
-2
@@ -38,6 +38,17 @@ public final class GenerationPorts
|
||||
{
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** A render target is absent or one of the resolutions the renderer supports.
|
||||
***************************************************************************/
|
||||
private static void renderTarget(Integer dpi)
|
||||
{
|
||||
if(dpi != null && !List.of(203, 300, 600).contains(dpi))
|
||||
{
|
||||
throw new IllegalArgumentException("A render target is 203, 300 or 600 dpi.");
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** Initial output contracts; new formats require a qualified renderer adapter.
|
||||
*******************************************************************************/
|
||||
@@ -93,7 +104,99 @@ public final class GenerationPorts
|
||||
SCANNER_BARCODE_PAYLOAD_UNSUPPORTED,
|
||||
SCANNER_BARCODE_CHECKSUM_REQUIRED,
|
||||
SCANNER_BARCODE_CHECKSUM_MISMATCH,
|
||||
UNSUPPORTED_BARCODE_OPTION
|
||||
UNSUPPORTED_BARCODE_OPTION,
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
// version 2 scene refusals; no released renderer names these for a version 1 scene //
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
SCENE_INVALID,
|
||||
STOCK_MISMATCH,
|
||||
TARGET_REQUIRES_SCENE_2,
|
||||
ELEMENT_OUTSIDE_PRINTABLE_AREA,
|
||||
TEXT_DOES_NOT_FIT,
|
||||
VALUE_MISSING,
|
||||
VALUE_TOO_LONG,
|
||||
FONT_UNKNOWN,
|
||||
FONT_MISSING_GLYPH,
|
||||
RESERVED_FONT_NAME,
|
||||
BARCODE_DOES_NOT_FIT,
|
||||
GS1_INVALID,
|
||||
ASSET_UNKNOWN,
|
||||
PREVIEW_TOO_LARGE,
|
||||
RENDERER_TOO_OLD
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** One renderer finding about a layout: a code from a closed vocabulary, the
|
||||
** element id the template author wrote, and numbers. It has no free text, so
|
||||
** no record value, context text or exception message can travel in it.
|
||||
***************************************************************************/
|
||||
public record Diagnostic(String code, Severity severity, String element, List<Integer> box, Map<String, Integer> measured, Map<String, Integer> limit)
|
||||
{
|
||||
private static final java.util.Set<String> WARNINGS = java.util.Set.of("TEXT_TRUNCATED", "TEXT_SMALL_FOR_DPI", "TEXT_LIGHT_FACE", "FIT_NOT_PROVEN",
|
||||
"BARCODE_MODULE_BELOW_RECOMMENDED", "QUIET_ZONE_INTRUDED", "ELEMENTS_OVERLAP", "IMAGE_UPSCALED", "DEVICE_UNIT_USED", "PRINTER_FONT_NOT_SHOWN");
|
||||
private static final java.util.Set<String> INFORMATION = java.util.Set.of("TEXT_SHRUNK", "TEXT_WRAPPED", "BARCODE_MODULE", "IMAGE_SCALED");
|
||||
|
||||
/************************************************************************
|
||||
** An error stops printing; a warning and information do not.
|
||||
************************************************************************/
|
||||
public enum Severity
|
||||
{
|
||||
ERROR, WARNING, INFO
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
** Admit only the vocabulary: an error is a FailureCode name, a warning or
|
||||
** information is one of the fixed names. The element is absent or an
|
||||
** author-written id, the box is absent or x, y, width and height in dots,
|
||||
** and measured values and limits are at most eight named integers each.
|
||||
************************************************************************/
|
||||
public Diagnostic
|
||||
{
|
||||
if(severity == null || code == null || !known(code, severity))
|
||||
{
|
||||
throw new IllegalArgumentException("Unknown diagnostic code for its severity.");
|
||||
}
|
||||
if(element != null && !element.matches("[A-Za-z][A-Za-z0-9_-]{0,31}"))
|
||||
{
|
||||
throw new IllegalArgumentException("Invalid diagnostic element id.");
|
||||
}
|
||||
if(box != null && (box.size() != 4 || box.stream().anyMatch(java.util.Objects::isNull) || box.get(2) < 0 || box.get(3) < 0))
|
||||
{
|
||||
throw new IllegalArgumentException("A diagnostic box is x, y, width and height in dots.");
|
||||
}
|
||||
box = box == null ? null : List.copyOf(box);
|
||||
measured = numbers(measured);
|
||||
limit = numbers(limit);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
** The closed vocabulary, by severity.
|
||||
************************************************************************/
|
||||
private static boolean known(String code, Severity severity)
|
||||
{
|
||||
return (switch(severity)
|
||||
{
|
||||
case ERROR -> java.util.Arrays.stream(FailureCode.values()).anyMatch(failure -> failure.name().equals(code));
|
||||
case WARNING -> WARNINGS.contains(code);
|
||||
case INFO -> INFORMATION.contains(code);
|
||||
});
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
** Freeze named integers; a name is a short identifier, never a sentence.
|
||||
************************************************************************/
|
||||
private static Map<String, Integer> numbers(Map<String, Integer> values)
|
||||
{
|
||||
if(values == null)
|
||||
{
|
||||
return (Map.of());
|
||||
}
|
||||
if(values.size() > 8 || values.entrySet().stream().anyMatch(entry -> entry.getKey() == null || !entry.getKey().matches("[a-z][A-Za-z0-9]{0,31}") || entry.getValue() == null))
|
||||
{
|
||||
throw new IllegalArgumentException("Diagnostic values are at most eight named integers.");
|
||||
}
|
||||
return (Map.copyOf(values));
|
||||
}
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
@@ -103,14 +206,29 @@ public final class GenerationPorts
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
private final FailureCode code;
|
||||
private final transient Diagnostic diagnostic;
|
||||
|
||||
/***************************************************************************
|
||||
** Construct a native process error whose public message is the safe code.
|
||||
***************************************************************************/
|
||||
public RenderException(FailureCode code)
|
||||
{
|
||||
this(code, null);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** A refusal that also says where and by how much: the diagnostic, when
|
||||
** present, is the error with this same code. The message stays the code.
|
||||
***************************************************************************/
|
||||
public RenderException(FailureCode code, Diagnostic diagnostic)
|
||||
{
|
||||
super(java.util.Objects.requireNonNull(code).name());
|
||||
if(diagnostic != null && (diagnostic.severity() != Diagnostic.Severity.ERROR || !code.name().equals(diagnostic.code())))
|
||||
{
|
||||
throw new IllegalArgumentException("A refusal's diagnostic must be the error with the same code.");
|
||||
}
|
||||
this.code = code;
|
||||
this.diagnostic = diagnostic;
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
@@ -120,6 +238,14 @@ public final class GenerationPorts
|
||||
{
|
||||
return (code);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** The detail the worker gave with the refusal, or null when it gave none.
|
||||
***************************************************************************/
|
||||
public Diagnostic diagnostic()
|
||||
{
|
||||
return (diagnostic);
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -223,7 +349,99 @@ public final class GenerationPorts
|
||||
** Bounded worker job with all revision inputs captured before dispatch.
|
||||
*******************************************************************************/
|
||||
public record RenderRequest(String requestId, String actorId, Source source, Format format, Revision revision,
|
||||
Map<String, Object> context, Integer maximumBytes) {}
|
||||
Map<String, Object> context, Integer maximumBytes, Integer targetDpi)
|
||||
{
|
||||
/***************************************************************************
|
||||
** The render target is absent (the stock's own resolution) or a resolution
|
||||
** the renderer supports.
|
||||
***************************************************************************/
|
||||
public RenderRequest
|
||||
{
|
||||
renderTarget(targetDpi);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** Existing callers render at the stock's own resolution.
|
||||
***************************************************************************/
|
||||
public RenderRequest(String requestId, String actorId, Source source, Format format, Revision revision,
|
||||
Map<String, Object> context, Integer maximumBytes)
|
||||
{
|
||||
this(requestId, actorId, source, format, revision, context, maximumBytes, null);
|
||||
}
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** A layout preview job: the print path stopped before retention. It has no
|
||||
** request id and no source record because nothing is written for it.
|
||||
***************************************************************************/
|
||||
public record PreviewRequest(String actorId, Format format, Revision revision, Map<String, Object> context, Integer targetDpi, Integer maximumBytes)
|
||||
{
|
||||
/***************************************************************************
|
||||
** Refuse a job that names no format or content, an unsupported render
|
||||
** target or no output bound.
|
||||
***************************************************************************/
|
||||
public PreviewRequest
|
||||
{
|
||||
if(format == null || revision == null || maximumBytes == null || maximumBytes < 1)
|
||||
{
|
||||
throw new IllegalArgumentException("A preview needs a format, a revision and an output limit.");
|
||||
}
|
||||
renderTarget(targetDpi);
|
||||
}
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** One preview page: a PNG whose pixels are printer dots at the render target.
|
||||
***************************************************************************/
|
||||
public record PreviewPage(byte[] png, Integer widthDots, Integer heightDots)
|
||||
{
|
||||
private static final byte[] SIGNATURE = {(byte) 0x89, 'P', 'N', 'G', 13, 10, 26, 10};
|
||||
|
||||
/***************************************************************************
|
||||
** Only a PNG with a stated size is a page; the bytes cannot change later.
|
||||
***************************************************************************/
|
||||
public PreviewPage
|
||||
{
|
||||
if(png == null || png.length < SIGNATURE.length || !java.util.Arrays.equals(png, 0, SIGNATURE.length, SIGNATURE, 0, SIGNATURE.length)
|
||||
|| widthDots == null || widthDots < 1 || heightDots == null || heightDots < 1)
|
||||
{
|
||||
throw new IllegalArgumentException("A preview page is a PNG with its size in dots.");
|
||||
}
|
||||
png = png.clone();
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** Never expose the stored byte array to a consumer.
|
||||
***************************************************************************/
|
||||
@Override
|
||||
public byte[] png()
|
||||
{
|
||||
return (png.clone());
|
||||
}
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** What a preview shows: the pages, whether they are exactly what prints,
|
||||
** whether the layout can print at all, every diagnostic, and the size and
|
||||
** hash of the output the pages were decoded from.
|
||||
***************************************************************************/
|
||||
public record Preview(List<PreviewPage> pages, Boolean exact, Boolean printable, List<Diagnostic> diagnostics, Long outputBytes, String outputSha256)
|
||||
{
|
||||
/***************************************************************************
|
||||
** Freeze the lists and refuse a contradiction: a layout with an error
|
||||
** diagnostic is not printable.
|
||||
***************************************************************************/
|
||||
public Preview
|
||||
{
|
||||
pages = List.copyOf(pages);
|
||||
diagnostics = List.copyOf(diagnostics);
|
||||
if(exact == null || printable == null || outputBytes == null || outputBytes < 0 || outputSha256 == null || !outputSha256.matches("[a-f0-9]{64}")
|
||||
|| (printable && diagnostics.stream().anyMatch(diagnostic -> diagnostic.severity() == Diagnostic.Severity.ERROR)))
|
||||
{
|
||||
throw new IllegalArgumentException("Invalid preview result.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** Temporary bounded worker result, discarded after retained intake.
|
||||
@@ -393,6 +611,16 @@ public final class GenerationPorts
|
||||
throw new QException("Renderer barcode reference is unavailable.");
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
** Optional layout preview: the print path stopped before retention, with
|
||||
** the pages decoded from the validated output. A renderer that does not
|
||||
** provide it refuses, so an existing adapter is unchanged.
|
||||
***********************************************************************/
|
||||
default Preview preview(PreviewRequest request) throws QException
|
||||
{
|
||||
throw new QException("Renderer preview is unavailable.");
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** Authorize assets and validate user source outside the application JVM.
|
||||
*******************************************************************************/
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
package com.kingsrook.qbits.documentgeneration;
|
||||
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
|
||||
|
||||
/*******************************************************************************
|
||||
** Layout preview processes for a template: sample, stress and record data.
|
||||
** The producer already calls this registration point; it registers nothing yet.
|
||||
*******************************************************************************/
|
||||
final class GenerationPreviewProcesses
|
||||
{
|
||||
/*******************************************************************************
|
||||
** Metadata namespace.
|
||||
*******************************************************************************/
|
||||
private GenerationPreviewProcesses()
|
||||
{
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** Called once by the producer after the generation and authoring processes.
|
||||
*******************************************************************************/
|
||||
static void register(QInstance instance, DocumentGenerationQBitConfig config) throws QException
|
||||
{
|
||||
}
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
package com.kingsrook.qbits.documentgeneration;
|
||||
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
||||
|
||||
/*******************************************************************************
|
||||
** The "Label preview" section of the template record screen. The template
|
||||
** table already offers itself here after its own sections; nothing is added yet.
|
||||
*******************************************************************************/
|
||||
final class GenerationPreviewWidget
|
||||
{
|
||||
/*******************************************************************************
|
||||
** Metadata namespace.
|
||||
*******************************************************************************/
|
||||
private GenerationPreviewWidget()
|
||||
{
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** Called once for the template table, after its standard sections.
|
||||
*******************************************************************************/
|
||||
static void section(QTableMetaData table)
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -182,6 +182,7 @@ public final class GenerationTables
|
||||
table.withSection(new QFieldSection("advanced", new QIcon("settings"), Tier.T3, List.of("id", "createDate", "scriptArtifact", "assetIds")).withLabel("Advanced references")
|
||||
.withCollapsible(CollapsibleMetaData.INITIALLY_CLOSED)
|
||||
.withHelpContent(help("These are exact stored identities for support and provenance. Change scripts and included assets through the named actions; do not edit integrity references.")));
|
||||
GenerationPreviewWidget.section(table);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
package com.kingsrook.qbits.documentgeneration;
|
||||
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
|
||||
|
||||
/*******************************************************************************
|
||||
** The authoring action that converts a version 1 scene to version 2.
|
||||
** The producer already calls this registration point; it registers nothing yet.
|
||||
*******************************************************************************/
|
||||
final class GenerationUpgradeProcesses
|
||||
{
|
||||
/*******************************************************************************
|
||||
** Metadata namespace.
|
||||
*******************************************************************************/
|
||||
private GenerationUpgradeProcesses()
|
||||
{
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** Called once by the producer after the generation and authoring processes.
|
||||
*******************************************************************************/
|
||||
static void register(QInstance instance, DocumentGenerationQBitConfig config) throws QException
|
||||
{
|
||||
}
|
||||
}
|
||||
+305
@@ -0,0 +1,305 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.documentgeneration;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import com.kingsrook.qbits.documentgeneration.GenerationPorts.Diagnostic;
|
||||
import com.kingsrook.qbits.documentgeneration.GenerationPorts.Diagnostic.Severity;
|
||||
import com.kingsrook.qbits.documentgeneration.GenerationPorts.FailureCode;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
/*******************************************************************************
|
||||
** The preview, diagnostic and render target ports: what each value admits, what
|
||||
** the defaults refuse, and that every existing constructor and adapter still
|
||||
** compiles and means what it did.
|
||||
*******************************************************************************/
|
||||
class GenerationPortsContractTest
|
||||
{
|
||||
private static final GenerationPorts.Stock STOCK = new GenerationPorts.Stock(101600, 25400, 3000, 3000, 3000, 3000, 203);
|
||||
private static final GenerationPorts.Revision REVISION = new GenerationPorts.Revision(1, 2, "orders", STOCK, null, "{}", null, List.of());
|
||||
private static final GenerationPorts.Source SOURCE = new GenerationPorts.Source("orders", "1");
|
||||
private static final byte[] PNG = {(byte) 0x89, 'P', 'N', 'G', 13, 10, 26, 10, 0};
|
||||
private static final String SHA = "0".repeat(64);
|
||||
|
||||
/***************************************************************************
|
||||
** An adapter written before the preview port: it implements what it always
|
||||
** did, and this class compiling is the source compatibility proof.
|
||||
***************************************************************************/
|
||||
private static final class ExistingAdapter implements GenerationPorts.IsolatedRenderer
|
||||
{
|
||||
/************************************************************************
|
||||
** Accept every revision.
|
||||
************************************************************************/
|
||||
@Override
|
||||
public void validate(String actorId, GenerationPorts.Revision revision)
|
||||
{
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
** Return fixed bytes.
|
||||
************************************************************************/
|
||||
@Override
|
||||
public GenerationPorts.Content render(GenerationPorts.RenderRequest request)
|
||||
{
|
||||
return (new GenerationPorts.Content(new byte[] {1}));
|
||||
}
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** The seven-argument request and the one-argument refusal are unchanged, and
|
||||
** an existing adapter refuses the optional operations it never had.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void existingConstructorsAndAdaptersMeanWhatTheyDid() throws Exception
|
||||
{
|
||||
var request = new GenerationPorts.RenderRequest("request-1", "actor-1", SOURCE, GenerationPorts.Format.ZPL, REVISION, Map.of("record", Map.of()), 1024);
|
||||
assertNull(request.targetDpi());
|
||||
assertEquals(request, new GenerationPorts.RenderRequest("request-1", "actor-1", SOURCE, GenerationPorts.Format.ZPL, REVISION, Map.of("record", Map.of()), 1024, null));
|
||||
var refusal = new GenerationPorts.RenderException(FailureCode.BARCODE_FIT_TOO_SMALL);
|
||||
assertEquals(FailureCode.BARCODE_FIT_TOO_SMALL, refusal.code());
|
||||
assertEquals("BARCODE_FIT_TOO_SMALL", refusal.getMessage());
|
||||
assertNull(refusal.diagnostic());
|
||||
assertThrows(NullPointerException.class, () -> new GenerationPorts.RenderException(null));
|
||||
var adapter = new ExistingAdapter();
|
||||
assertArrayEquals(new byte[] {1}, adapter.render(request).bytes());
|
||||
adapter.validate("actor-1", REVISION);
|
||||
assertEquals("Renderer preview is unavailable.", assertThrows(QException.class,
|
||||
() -> adapter.preview(new GenerationPorts.PreviewRequest("actor-1", GenerationPorts.Format.ZPL, REVISION, Map.of(), null, 1024))).getMessage());
|
||||
assertEquals("Renderer barcode reference is unavailable.", assertThrows(QException.class, adapter::barcodeReference).getMessage());
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** Stored error codes are read back by name, so the released names keep their
|
||||
** order and the version 2 refusals follow them.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void failureCodesKeepTheReleasedNamesThenAddTheSceneTwoRefusals()
|
||||
{
|
||||
List<String> names = Arrays.stream(FailureCode.values()).map(Enum::name).toList();
|
||||
assertEquals(List.of("BARCODE_FIT_TOO_SMALL", "BARCODE_FIT_UNSUPPORTED", "BARCODE_FIT_BOX_OUTSIDE_STOCK", "BARCODE_FIT_GEOMETRY_MISMATCH", "INVALID_BARCODE_FIT_PROFILE",
|
||||
"INVALID_BARCODE_FIT_REQUEST", "BARCODE_SYMBOLOGY_NOT_ALLOWED", "SYMBOLOGY_ALLOWLIST_REQUIRED", "SCANNER_BARCODE_PROFILE_UNSUPPORTED", "SCANNER_BARCODE_PAYLOAD_UNSUPPORTED",
|
||||
"SCANNER_BARCODE_CHECKSUM_REQUIRED", "SCANNER_BARCODE_CHECKSUM_MISMATCH", "UNSUPPORTED_BARCODE_OPTION"), names.subList(0, 13));
|
||||
assertEquals(List.of("SCENE_INVALID", "STOCK_MISMATCH", "TARGET_REQUIRES_SCENE_2", "ELEMENT_OUTSIDE_PRINTABLE_AREA", "TEXT_DOES_NOT_FIT", "VALUE_MISSING", "VALUE_TOO_LONG",
|
||||
"FONT_UNKNOWN", "FONT_MISSING_GLYPH", "RESERVED_FONT_NAME", "BARCODE_DOES_NOT_FIT", "GS1_INVALID", "ASSET_UNKNOWN", "PREVIEW_TOO_LARGE", "RENDERER_TOO_OLD"), names.subList(13, names.size()));
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** A render target is absent or a resolution the renderer supports, for a
|
||||
** render and for a preview alike.
|
||||
***************************************************************************/
|
||||
@ParameterizedTest
|
||||
@ValueSource(ints = {0, 72, 200, 204, 301, 1200, -203})
|
||||
void anUnsupportedRenderTargetIsRefused(int dpi)
|
||||
{
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.RenderRequest("request-1", "actor-1", SOURCE, GenerationPorts.Format.ZPL, REVISION, Map.of(), 1024, dpi));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.PreviewRequest("actor-1", GenerationPorts.Format.ZPL, REVISION, Map.of(), dpi, 1024));
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** Each supported resolution is carried unchanged.
|
||||
***************************************************************************/
|
||||
@ParameterizedTest
|
||||
@ValueSource(ints = {203, 300, 600})
|
||||
void aSupportedRenderTargetIsCarried(int dpi)
|
||||
{
|
||||
assertEquals(dpi, new GenerationPorts.RenderRequest("request-1", "actor-1", SOURCE, GenerationPorts.Format.ZPL, REVISION, Map.of(), 1024, dpi).targetDpi());
|
||||
assertEquals(dpi, new GenerationPorts.PreviewRequest("actor-1", GenerationPorts.Format.ZPL, REVISION, Map.of(), dpi, 1024).targetDpi());
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** A preview job names its format, its content and an output bound.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void aPreviewRequestNeedsAFormatARevisionAndALimit()
|
||||
{
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.PreviewRequest("actor-1", null, REVISION, Map.of(), null, 1024));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.PreviewRequest("actor-1", GenerationPorts.Format.ZPL, null, Map.of(), null, 1024));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.PreviewRequest("actor-1", GenerationPorts.Format.ZPL, REVISION, Map.of(), null, null));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.PreviewRequest("actor-1", GenerationPorts.Format.ZPL, REVISION, Map.of(), null, 0));
|
||||
assertEquals(REVISION, new GenerationPorts.PreviewRequest("actor-1", GenerationPorts.Format.PDF, REVISION, Map.of(), null, 1).revision());
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** A page is a PNG with a size, and neither the caller nor a consumer can
|
||||
** change its bytes afterwards.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void aPreviewPageIsAnImmutablePngWithItsSize()
|
||||
{
|
||||
byte[] supplied = PNG.clone();
|
||||
var page = new GenerationPorts.PreviewPage(supplied, 812, 203);
|
||||
supplied[8] = 9;
|
||||
page.png()[8] = 9;
|
||||
assertArrayEquals(PNG, page.png());
|
||||
assertEquals(812, page.widthDots());
|
||||
assertEquals(203, page.heightDots());
|
||||
byte[] jpeg = PNG.clone();
|
||||
jpeg[1] = 'J';
|
||||
for(byte[] bytes : new byte[][] {null, new byte[0], Arrays.copyOf(PNG, 7), jpeg})
|
||||
{
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.PreviewPage(bytes, 812, 203));
|
||||
}
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.PreviewPage(PNG, null, 203));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.PreviewPage(PNG, 0, 203));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.PreviewPage(PNG, 812, null));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.PreviewPage(PNG, 812, 0));
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** A preview freezes its lists, states its output exactly, and cannot call a
|
||||
** layout with an error printable.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void aPreviewIsFrozenAndCannotContradictItsDiagnostics()
|
||||
{
|
||||
var page = new GenerationPorts.PreviewPage(PNG, 812, 203);
|
||||
var error = new Diagnostic("TEXT_DOES_NOT_FIT", Severity.ERROR, "caption", null, null, null);
|
||||
var warning = new Diagnostic("PRINTER_FONT_NOT_SHOWN", Severity.WARNING, null, null, null, null);
|
||||
List<GenerationPorts.PreviewPage> pages = new ArrayList<>(List.of(page));
|
||||
List<Diagnostic> diagnostics = new ArrayList<>(List.of(warning));
|
||||
var preview = new GenerationPorts.Preview(pages, false, true, diagnostics, 1234L, SHA);
|
||||
pages.clear();
|
||||
diagnostics.clear();
|
||||
assertEquals(List.of(page), preview.pages());
|
||||
assertEquals(List.of(warning), preview.diagnostics());
|
||||
assertThrows(UnsupportedOperationException.class, () -> preview.pages().clear());
|
||||
assertThrows(UnsupportedOperationException.class, () -> preview.diagnostics().clear());
|
||||
assertEquals(false, new GenerationPorts.Preview(List.of(), true, false, List.of(error), 0L, SHA).printable());
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.Preview(List.of(page), true, true, List.of(warning, error), 1234L, SHA));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.Preview(List.of(page), null, true, List.of(), 1234L, SHA));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.Preview(List.of(page), true, null, List.of(), 1234L, SHA));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.Preview(List.of(page), true, true, List.of(), null, SHA));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.Preview(List.of(page), true, true, List.of(), -1L, SHA));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.Preview(List.of(page), true, true, List.of(), 1234L, null));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.Preview(List.of(page), true, true, List.of(), 1234L, SHA.toUpperCase().replace('0', 'A')));
|
||||
assertThrows(NullPointerException.class, () -> new GenerationPorts.Preview(null, true, true, List.of(), 1234L, SHA));
|
||||
assertThrows(NullPointerException.class, () -> new GenerationPorts.Preview(List.of(page), true, true, null, 1234L, SHA));
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** The design's example diagnostic, and every code of the first release under
|
||||
** its own severity only.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void aDiagnosticAdmitsOnlyItsClosedVocabulary()
|
||||
{
|
||||
var example = new Diagnostic("TEXT_DOES_NOT_FIT", Severity.ERROR, "caption", List.of(24, 131, 764, 56),
|
||||
Map.of("widthDots", 902, "sizeCentipoints", 700, "lines", 2), Map.of("widthDots", 764, "lines", 2));
|
||||
assertEquals(List.of(24, 131, 764, 56), example.box());
|
||||
assertEquals(902, example.measured().get("widthDots"));
|
||||
assertEquals(2, example.limit().get("lines"));
|
||||
for(FailureCode code : FailureCode.values())
|
||||
{
|
||||
assertEquals(code.name(), new Diagnostic(code.name(), Severity.ERROR, null, null, null, null).code());
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic(code.name(), Severity.WARNING, null, null, null, null));
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic(code.name(), Severity.INFO, null, null, null, null));
|
||||
}
|
||||
for(String code : List.of("TEXT_TRUNCATED", "TEXT_SMALL_FOR_DPI", "TEXT_LIGHT_FACE", "FIT_NOT_PROVEN", "BARCODE_MODULE_BELOW_RECOMMENDED", "QUIET_ZONE_INTRUDED", "ELEMENTS_OVERLAP",
|
||||
"IMAGE_UPSCALED", "DEVICE_UNIT_USED", "PRINTER_FONT_NOT_SHOWN"))
|
||||
{
|
||||
assertEquals(Severity.WARNING, new Diagnostic(code, Severity.WARNING, null, null, null, null).severity());
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic(code, Severity.ERROR, null, null, null, null));
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic(code, Severity.INFO, null, null, null, null));
|
||||
}
|
||||
for(String code : List.of("TEXT_SHRUNK", "TEXT_WRAPPED", "BARCODE_MODULE", "IMAGE_SCALED"))
|
||||
{
|
||||
assertEquals(Severity.INFO, new Diagnostic(code, Severity.INFO, null, null, null, null).severity());
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic(code, Severity.ERROR, null, null, null, null));
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic(code, Severity.WARNING, null, null, null, null));
|
||||
}
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic("RENDER_FAILED", Severity.ERROR, null, null, null, null));
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic("Customer Jane Example could not be printed", Severity.ERROR, null, null, null, null));
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic(null, Severity.ERROR, null, null, null, null));
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic("TEXT_DOES_NOT_FIT", null, null, null, null, null));
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** Nothing but an author-written id and numbers fits beside the code: a
|
||||
** sentence, a record value or a message has no field that will hold it.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void aDiagnosticCannotHoldFreeText()
|
||||
{
|
||||
assertEquals("order_id-2", new Diagnostic("VALUE_MISSING", Severity.ERROR, "order_id-2", null, null, null).element());
|
||||
for(String element : List.of("", "9caption", "two words", "Jane Example, 1 Test Street", "a".repeat(33), "caption\n", "/record/name"))
|
||||
{
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic("VALUE_MISSING", Severity.ERROR, element, null, null, null), element);
|
||||
}
|
||||
for(List<Integer> box : List.of(List.<Integer>of(), List.of(1, 2, 3), List.of(1, 2, 3, 4, 5), List.of(1, 2, -3, 4), List.of(1, 2, 3, -4), Arrays.asList(1, null, 3, 4)))
|
||||
{
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic("ELEMENT_OUTSIDE_PRINTABLE_AREA", Severity.ERROR, "caption", box, null, null), String.valueOf(box));
|
||||
}
|
||||
assertEquals(List.of(-12, -4, 0, 0), new Diagnostic("ELEMENT_OUTSIDE_PRINTABLE_AREA", Severity.ERROR, "caption", List.of(-12, -4, 0, 0), null, null).box());
|
||||
Map<String, Integer> nullValue = new HashMap<>();
|
||||
nullValue.put("widthDots", null);
|
||||
Map<String, Integer> nullName = new HashMap<>();
|
||||
nullName.put(null, 1);
|
||||
Map<String, Integer> tooMany = new HashMap<>();
|
||||
for(int index = 0; index < 9; index++)
|
||||
{
|
||||
tooMany.put("value" + index, index);
|
||||
}
|
||||
for(Map<String, Integer> values : List.of(Map.of("Width", 1), Map.of("width dots", 1), Map.of("the value Jane Example is too long", 1), Map.of("w".repeat(33), 1), nullValue, nullName, tooMany))
|
||||
{
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic("TEXT_DOES_NOT_FIT", Severity.ERROR, "caption", null, values, null));
|
||||
assertThrows(IllegalArgumentException.class, () -> new Diagnostic("TEXT_DOES_NOT_FIT", Severity.ERROR, "caption", null, null, values));
|
||||
}
|
||||
List<Integer> box = new ArrayList<>(List.of(1, 2, 3, 4));
|
||||
Map<String, Integer> measured = new HashMap<>(Map.of("widthDots", 902));
|
||||
var diagnostic = new Diagnostic("TEXT_DOES_NOT_FIT", Severity.ERROR, "caption", box, measured, null);
|
||||
box.set(0, 99);
|
||||
measured.put("widthDots", 1);
|
||||
assertEquals(List.of(1, 2, 3, 4), diagnostic.box());
|
||||
assertEquals(Map.of("widthDots", 902), diagnostic.measured());
|
||||
assertEquals(Map.of(), diagnostic.limit());
|
||||
assertThrows(UnsupportedOperationException.class, () -> diagnostic.box().set(0, 99));
|
||||
assertThrows(UnsupportedOperationException.class, () -> diagnostic.measured().put("widthDots", 1));
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** A refusal carries only the error diagnostic with its own code, and its
|
||||
** public message is still the code alone.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void aRefusalCarriesOnlyItsOwnErrorDiagnostic()
|
||||
{
|
||||
var detail = new Diagnostic("TEXT_DOES_NOT_FIT", Severity.ERROR, "caption", List.of(24, 131, 764, 56), Map.of("widthDots", 902), Map.of("widthDots", 764));
|
||||
var refusal = new GenerationPorts.RenderException(FailureCode.TEXT_DOES_NOT_FIT, detail);
|
||||
assertEquals(FailureCode.TEXT_DOES_NOT_FIT, refusal.code());
|
||||
assertEquals(detail, refusal.diagnostic());
|
||||
assertEquals("TEXT_DOES_NOT_FIT", refusal.getMessage());
|
||||
assertNull(new GenerationPorts.RenderException(FailureCode.TEXT_DOES_NOT_FIT, null).diagnostic());
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.RenderException(FailureCode.VALUE_MISSING, detail));
|
||||
assertThrows(IllegalArgumentException.class, () -> new GenerationPorts.RenderException(FailureCode.TEXT_DOES_NOT_FIT, new Diagnostic("TEXT_SHRUNK", Severity.INFO, "caption", null, null, null)));
|
||||
assertThrows(NullPointerException.class, () -> new GenerationPorts.RenderException(null, detail));
|
||||
}
|
||||
}
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.documentgeneration;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.TreeSet;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.QFieldSection;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
||||
import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryBackendModule;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
/*******************************************************************************
|
||||
** The registration points for the preview, asset and upgrade packages exist and
|
||||
** are called, and add nothing: a host that registers the QBit gets exactly the
|
||||
** tables, processes, choices, widgets and template sections it got before.
|
||||
*******************************************************************************/
|
||||
class GenerationRegistrationHooksTest
|
||||
{
|
||||
/***************************************************************************
|
||||
** The complete default wiring, as the released foundation registers it.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void theProducerRegistersExactlyWhatItDidBeforeTheHooks() throws Exception
|
||||
{
|
||||
QInstance instance = instance();
|
||||
new DocumentGenerationQBitProducer().withQBitConfig(config()).produce(instance);
|
||||
assertEquals(List.of("document_generation_asset", "document_generation_batch", "document_generation_binding", "document_generation_control", "document_generation_event",
|
||||
"document_generation_item", "document_generation_queue", "document_generation_request", "document_generation_revision", "document_generation_stock",
|
||||
"document_generation_template", "document_generation_type", "orders"),
|
||||
List.copyOf(new TreeSet<>(instance.getTables().keySet())), "tables");
|
||||
assertEquals(List.of("document_generation_binding_author_create", "document_generation_queue_document_advance", "document_generation_queue_document_cancel",
|
||||
"document_generation_queue_document_reconcileItem", "document_generation_queue_document_recover", "document_generation_queue_document_status",
|
||||
"document_generation_request_document_download", "document_generation_request_document_reconcile", "document_generation_request_document_reprint",
|
||||
"document_generation_request_document_status", "document_generation_stock_author_create", "document_generation_stock_author_rename",
|
||||
"document_generation_template_author_asset", "document_generation_template_author_catalog", "document_generation_template_author_context",
|
||||
"document_generation_template_author_create", "document_generation_template_author_edit", "document_generation_template_author_naming",
|
||||
"document_generation_template_author_packingSlip", "document_generation_template_author_preview", "document_generation_template_author_publish",
|
||||
"document_generation_template_author_removeAsset", "document_generation_template_author_rename", "document_generation_template_author_replaceAsset",
|
||||
"document_generation_type_author_create", "document_generation_type_author_rename", "orders_document_enqueue", "orders_document_generate"),
|
||||
List.copyOf(new TreeSet<>(instance.getProcesses().keySet())), "processes");
|
||||
assertEquals(List.of("document_generation_asset", "document_generation_context_publications", "document_generation_formats", "document_generation_preview_source",
|
||||
"document_generation_preview_source_orders", "document_generation_retained_assets", "document_generation_revision",
|
||||
"document_generation_source_tables", "document_generation_stock", "document_generation_template", "document_generation_type"),
|
||||
List.copyOf(new TreeSet<>(instance.getPossibleValueSources().keySet())), "possible value sources");
|
||||
assertEquals(List.of(),
|
||||
List.copyOf(new TreeSet<>(instance.getWidgets().keySet())), "widgets");
|
||||
assertEquals(List.of("overview", "layout", "context", "advanced"),
|
||||
instance.getTable(GenerationTables.TEMPLATE).getSections().stream().map(QFieldSection::getName).toList(), "template sections");
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** Each registration point, called directly, changes nothing.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void eachRegistrationPointAddsNothingYet() throws Exception
|
||||
{
|
||||
DocumentGenerationQBitConfig config = config();
|
||||
assertEquals(List.of(), GenerationAssetTables.tables(config));
|
||||
QInstance instance = instance();
|
||||
GenerationPreviewProcesses.register(instance, config);
|
||||
GenerationAssetProcesses.register(instance, config);
|
||||
GenerationUpgradeProcesses.register(instance, config);
|
||||
assertEquals(List.of(), List.copyOf(instance.getProcesses().keySet()));
|
||||
assertEquals(List.of("orders"), List.copyOf(instance.getTables().keySet()));
|
||||
QTableMetaData table = new QTableMetaData().withName("template");
|
||||
GenerationPreviewWidget.section(table);
|
||||
assertEquals(new QTableMetaData().withName("template").getSections(), table.getSections());
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** The smallest host: one backend and one source table.
|
||||
***************************************************************************/
|
||||
private static QInstance instance()
|
||||
{
|
||||
QInstance instance = new QInstance();
|
||||
instance.addBackend(new QBackendMetaData().withName("memory").withBackendType(MemoryBackendModule.class));
|
||||
instance.addTable(new QTableMetaData().withName("orders").withBackendName("memory").withPrimaryKeyField("id").withField(new QFieldMetaData("id", QFieldType.INTEGER)));
|
||||
return (instance);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** Default limits, with one source table so the source choices are registered.
|
||||
***************************************************************************/
|
||||
private static DocumentGenerationQBitConfig config()
|
||||
{
|
||||
return (new DocumentGenerationQBitConfig().withBackendName("memory").withSourceTables(List.of("orders")));
|
||||
}
|
||||
}
|
||||
@@ -36,6 +36,26 @@
|
||||
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.9.0</version><executions><execution><id>runtime-libraries</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><includeScope>runtime</includeScope><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin>
|
||||
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.4.2</version><configuration><archive><manifest><mainClass>com.kingsrook.qbits.renderer.RendererMain</mainClass><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest></archive></configuration></plugin>
|
||||
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-checkstyle-plugin</artifactId><version>3.3.1</version><dependencies><dependency><groupId>com.puppycrawl.tools</groupId><artifactId>checkstyle</artifactId><version>10.12.6</version></dependency></dependencies><configuration><configLocation>${project.basedir}/checkstyle/config.xml</configLocation><propertyExpansion>checkstyle.reactor.root=${project.basedir}</propertyExpansion><includeTestSourceDirectory>true</includeTestSourceDirectory><consoleOutput>true</consoleOutput><violationSeverity>warning</violationSeverity><failOnViolation>true</failOnViolation></configuration><executions><execution><phase>validate</phase><goals><goal>check</goal></goals></execution></executions></plugin>
|
||||
<plugin>
|
||||
<!-- Coverage gates. The BUNDLE rule is the measured baseline of the existing renderer, rounded down (2026-11-11: 94.0% of instructions and 91.3% of lines); raise it when coverage rises and
|
||||
never lower it. The PACKAGE and CLASS rules hold new code to 100% line coverage from its first commit; a pattern matches nothing until its package or class exists, so the package that adds
|
||||
it needs no change here. Nothing is excluded: JaCoCo skips only code annotated as generated, and this build defines no such annotation. There is no skip switch. -->
|
||||
<groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.8.15</version><executions>
|
||||
<execution><goals><goal>prepare-agent</goal></goals></execution>
|
||||
<execution><id>report</id><phase>verify</phase><goals><goal>report</goal></goals></execution>
|
||||
<execution><id>coverage</id><phase>verify</phase><goals><goal>check</goal></goals><configuration><rules>
|
||||
<rule><element>BUNDLE</element><limits>
|
||||
<limit><counter>INSTRUCTION</counter><value>COVEREDRATIO</value><minimum>0.94</minimum></limit>
|
||||
<limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.91</minimum></limit>
|
||||
</limits></rule>
|
||||
<rule><element>PACKAGE</element><includes><include>com.kingsrook.qbits.renderer.scene2</include><include>com.kingsrook.qbits.renderer.scene2.*</include></includes><limits>
|
||||
<limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>1.00</minimum></limit>
|
||||
</limits></rule>
|
||||
<rule><element>CLASS</element><includes><include>com.kingsrook.qbits.renderer.AssetInspector</include><include>com.kingsrook.qbits.renderer.AssetInspector.*</include></includes><limits>
|
||||
<limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>1.00</minimum></limit>
|
||||
</limits></rule>
|
||||
</rules></configuration></execution>
|
||||
</executions></plugin>
|
||||
<plugin>
|
||||
<!-- Publish a self-contained POM: ${revision} is resolved at build time, so a consumer needs no -Drevision -->
|
||||
<groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>1.7.3</version>
|
||||
|
||||
@@ -0,0 +1,218 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.renderer;
|
||||
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.SplittableRandom;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Seeded, bounded mutation campaign for a parser of untrusted input. A seed, an
|
||||
** iteration number, the corpus and the dictionary fully determine every input:
|
||||
** there is no clock and no unseeded randomness, so a finding replays exactly.
|
||||
** Targets, limits and the replay command are in `docs/security/fuzzing.md`. The
|
||||
** same class is kept in the test tree of `bridges/renderer`.
|
||||
*******************************************************************************/
|
||||
final class MutationCampaign
|
||||
{
|
||||
static final int MAXIMUM_ITERATIONS = 100_000;
|
||||
static final int MAXIMUM_INPUT_BYTES = 1024 * 1024;
|
||||
|
||||
private static final byte[] INTERESTING = {0, 9, 10, 13, ' ', '"', '\\', '^', '~', '_', ',', '{', '}', '[', ']', '0', '9', '-', (byte) 0x7F, (byte) 0x80, (byte) 0xC0, (byte) 0xFF};
|
||||
|
||||
private final List<byte[]> corpus;
|
||||
private final List<byte[]> dictionary;
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The parser under test. Returning normally means the input was accepted; a
|
||||
** target asserts its own property on what it accepts.
|
||||
***************************************************************************/
|
||||
@FunctionalInterface
|
||||
interface Target
|
||||
{
|
||||
/************************************************************************
|
||||
** Parse one generated input.
|
||||
************************************************************************/
|
||||
void accept(byte[] input) throws Exception;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** An input that was neither accepted nor refused in the declared way, with
|
||||
** the coordinates that regenerate it: `input(seed, iteration)`.
|
||||
***************************************************************************/
|
||||
record Finding(long seed, int iteration, String failure)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** What a campaign saw. A campaign that accepted or refused nothing has not
|
||||
** exercised both sides of the parser, so callers assert on the counts too.
|
||||
***************************************************************************/
|
||||
record Result(int accepted, int refused, List<Finding> findings)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** Valid inputs to start from, and tokens of the format to splice in.
|
||||
***************************************************************************/
|
||||
MutationCampaign(List<byte[]> corpus, List<String> dictionary)
|
||||
{
|
||||
if(corpus.isEmpty() || corpus.stream().anyMatch(seedInput -> seedInput.length > MAXIMUM_INPUT_BYTES))
|
||||
{
|
||||
throw new IllegalArgumentException("A campaign needs a corpus of inputs within the input limit.");
|
||||
}
|
||||
this.corpus = corpus.stream().map(byte[]::clone).toList();
|
||||
this.dictionary = dictionary.stream().map(token -> token.getBytes(StandardCharsets.UTF_8)).toList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The seeds for this run: the fixed ones, or only `-Dfuzz.seed=<n>` when a
|
||||
** finding is replayed or a longer campaign is run by hand.
|
||||
***************************************************************************/
|
||||
static long[] seeds(long... fixed)
|
||||
{
|
||||
Long replay = Long.getLong("fuzz.seed");
|
||||
return (replay == null ? fixed : new long[] {replay});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The iteration count for this run: `-Dfuzz.iterations=<n>`, never unbounded.
|
||||
***************************************************************************/
|
||||
static int iterations(int fallback)
|
||||
{
|
||||
int iterations = Integer.getInteger("fuzz.iterations", fallback);
|
||||
if(iterations < 1 || iterations > MAXIMUM_ITERATIONS)
|
||||
{
|
||||
throw new IllegalArgumentException("fuzz.iterations must be between 1 and " + MAXIMUM_ITERATIONS);
|
||||
}
|
||||
return (iterations);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The input of one iteration: a corpus entry with one to four mutations.
|
||||
***************************************************************************/
|
||||
byte[] input(long seed, int iteration)
|
||||
{
|
||||
SplittableRandom random = new SplittableRandom(seed + 0x9E3779B97F4A7C15L * (iteration + 1L));
|
||||
byte[] value = corpus.get(random.nextInt(corpus.size())).clone();
|
||||
int steps = 1 + random.nextInt(4);
|
||||
for(int step = 0; step < steps; step++)
|
||||
{
|
||||
value = mutate(value, random);
|
||||
}
|
||||
return (value.length > MAXIMUM_INPUT_BYTES ? Arrays.copyOf(value, MAXIMUM_INPUT_BYTES) : value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** Run iterations 0 to `iterations - 1`. A thrown failure that `refusal`
|
||||
** recognises is the parser saying no; any other, including a failed assertion
|
||||
** in the target and a stack overflow, is a finding.
|
||||
***************************************************************************/
|
||||
Result run(long seed, int iterations, Target target, Predicate<Throwable> refusal)
|
||||
{
|
||||
if(iterations < 1 || iterations > MAXIMUM_ITERATIONS)
|
||||
{
|
||||
throw new IllegalArgumentException("A campaign runs between 1 and " + MAXIMUM_ITERATIONS + " iterations.");
|
||||
}
|
||||
int accepted = 0;
|
||||
int refused = 0;
|
||||
List<Finding> findings = new ArrayList<>();
|
||||
for(int iteration = 0; iteration < iterations; iteration++)
|
||||
{
|
||||
try
|
||||
{
|
||||
target.accept(input(seed, iteration));
|
||||
accepted++;
|
||||
}
|
||||
catch(Exception | AssertionError | StackOverflowError failure)
|
||||
{
|
||||
if(refusal.test(failure))
|
||||
{
|
||||
refused++;
|
||||
}
|
||||
else
|
||||
{
|
||||
findings.add(new Finding(seed, iteration, failure.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
return (new Result(accepted, refused, List.copyOf(findings)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** One structural or byte-level change at a random position.
|
||||
***************************************************************************/
|
||||
private byte[] mutate(byte[] value, SplittableRandom random)
|
||||
{
|
||||
int at = value.length == 0 ? 0 : random.nextInt(value.length);
|
||||
int span = value.length == 0 ? 0 : 1 + random.nextInt(Math.min(16, value.length - at));
|
||||
byte[] noise = new byte[1 + random.nextInt(8)];
|
||||
random.nextBytes(noise);
|
||||
return (switch(random.nextInt(8))
|
||||
{
|
||||
case 0 -> splice(value, at, span, new byte[0]);
|
||||
case 1 -> splice(value, at, 0, Arrays.copyOfRange(value, at, at + span));
|
||||
case 2 -> Arrays.copyOf(value, at);
|
||||
case 3 -> splice(value, at, 0, dictionary.isEmpty() ? noise : dictionary.get(random.nextInt(dictionary.size())));
|
||||
case 4 -> splice(value, at, 0, noise);
|
||||
case 5 -> splice(value, at, Math.min(1, value.length), new byte[] {INTERESTING[random.nextInt(INTERESTING.length)]});
|
||||
case 6 -> splice(value, at, Math.min(1, value.length), new byte[] {noise[0]});
|
||||
default -> splice(value, at, Math.min(1, value.length), value.length == 0 ? noise : new byte[] {(byte) (value[at] ^ (1 << random.nextInt(8)))});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** Replace `removed` bytes at `at` with `inserted`.
|
||||
***************************************************************************/
|
||||
private static byte[] splice(byte[] value, int at, int removed, byte[] inserted)
|
||||
{
|
||||
byte[] result = new byte[value.length - removed + inserted.length];
|
||||
System.arraycopy(value, 0, result, 0, at);
|
||||
System.arraycopy(inserted, 0, result, at, inserted.length);
|
||||
System.arraycopy(value, at + removed, result, at + inserted.length, value.length - at - removed);
|
||||
return (result);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,181 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.renderer;
|
||||
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** The mutation harness is deterministic and reports what it should, and one
|
||||
** bounded campaign runs in the normal test phase over the version 1 scene
|
||||
** parser. Seeds, limits and the replay command: `docs/security/fuzzing.md`.
|
||||
*******************************************************************************/
|
||||
class MutationCampaignTest
|
||||
{
|
||||
private static final long[] SEEDS = {20261111L, 7919L};
|
||||
private static final int ITERATIONS = 20_000;
|
||||
private static final Set<String> ELEMENTS = Set.of("text", "rasterText", "box", "image", "barcode");
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// a second, differently configured parser, so the acceptance check does not reuse the target //
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
private static final ObjectMapper INDEPENDENT = new ObjectMapper();
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** A seed and an iteration name one input, on every run and every machine.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void aSeedAndAnIterationAlwaysGiveTheSameInput()
|
||||
{
|
||||
MutationCampaign campaign = new MutationCampaign(List.of("^XA^FO10,20^GB30,40,2^FS^XZ".getBytes(StandardCharsets.US_ASCII)), List.of("^FO", "^GB"));
|
||||
MutationCampaign again = new MutationCampaign(List.of("^XA^FO10,20^GB30,40,2^FS^XZ".getBytes(StandardCharsets.US_ASCII)), List.of("^FO", "^GB"));
|
||||
Set<String> distinct = new java.util.HashSet<>();
|
||||
for(int iteration = 0; iteration < 200; iteration++)
|
||||
{
|
||||
byte[] input = campaign.input(42L, iteration);
|
||||
assertArrayEquals(input, again.input(42L, iteration));
|
||||
assertTrue(input.length <= MutationCampaign.MAXIMUM_INPUT_BYTES);
|
||||
distinct.add(Wire.sha256(input));
|
||||
}
|
||||
assertTrue(distinct.size() > 100, "mutations should rarely repeat: " + distinct.size());
|
||||
assertNotEquals(Wire.sha256(campaign.input(42L, 0)), Wire.sha256(campaign.input(43L, 0)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The harness fails when it should: a crash and an unsafe acceptance are both
|
||||
** findings, each carrying the coordinates that regenerate its input.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void aCrashAndAnUnsafeAcceptanceAreFindingsThatReplay()
|
||||
{
|
||||
MutationCampaign campaign = new MutationCampaign(List.of("0123456789".getBytes(StandardCharsets.US_ASCII)), List.of());
|
||||
MutationCampaign.Result result = campaign.run(42L, 300, input ->
|
||||
{
|
||||
if(input.length % 3 == 0)
|
||||
{
|
||||
throw new IllegalArgumentException("REFUSED");
|
||||
}
|
||||
if(input.length % 3 == 1)
|
||||
{
|
||||
throw new IllegalStateException("crash");
|
||||
}
|
||||
assertTrue(input.length < 11, "accepted an input it should have refused");
|
||||
}, IllegalArgumentException.class::isInstance);
|
||||
assertEquals(300, result.accepted() + result.refused() + result.findings().size());
|
||||
assertTrue(result.accepted() > 0 && result.refused() > 0);
|
||||
assertTrue(result.findings().stream().anyMatch(finding -> finding.failure().startsWith("java.lang.IllegalStateException")));
|
||||
assertTrue(result.findings().stream().anyMatch(finding -> finding.failure().contains("AssertionFailedError")));
|
||||
for(MutationCampaign.Finding finding : result.findings())
|
||||
{
|
||||
int length = campaign.input(finding.seed(), finding.iteration()).length;
|
||||
assertTrue(length % 3 == 1 || (length % 3 == 2 && length >= 11), finding.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** A campaign is always bounded and always has something to mutate.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void campaignsAreBounded()
|
||||
{
|
||||
MutationCampaign campaign = new MutationCampaign(List.of(new byte[0]), List.of());
|
||||
assertThrows(IllegalArgumentException.class, () -> campaign.run(1L, 0, input -> {}, failure -> true));
|
||||
assertThrows(IllegalArgumentException.class, () -> campaign.run(1L, MutationCampaign.MAXIMUM_ITERATIONS + 1, input -> {}, failure -> true));
|
||||
assertThrows(IllegalArgumentException.class, () -> new MutationCampaign(List.of(), List.of()));
|
||||
assertThrows(IllegalArgumentException.class, () -> new MutationCampaign(List.of(new byte[MutationCampaign.MAXIMUM_INPUT_BYTES + 1]), List.of()));
|
||||
assertEquals(50, campaign.run(1L, 50, input -> {}, failure -> false).accepted());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** Property: whatever the version 1 scene parser accepts is, read by a second
|
||||
** parser, a version 1 scene of known elements within the element limit. Every
|
||||
** other input is refused with an exception (the worker turns any exception
|
||||
** into its opaque error answer); a stack overflow would be a finding.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void theVersionOneSceneParserAcceptsOnlyVersionOneScenes() throws Exception
|
||||
{
|
||||
List<byte[]> corpus = new ArrayList<>();
|
||||
for(String name : List.of("text-font0-203", "box-203", "barcode-scale-203", "barcode-fit-matrix-203", "barcode-fit-linear-203"))
|
||||
{
|
||||
try(InputStream stream = MutationCampaignTest.class.getResourceAsStream("/compat-v1/cases/" + name + ".json"))
|
||||
{
|
||||
corpus.add(Wire.JSON.writeValueAsBytes(Wire.JSON.readTree(stream).get("scene")));
|
||||
}
|
||||
}
|
||||
MutationCampaign campaign = new MutationCampaign(corpus, List.of("\"type\"", "\"barcode\"", "\"rasterText\"", "\"fit\"", "\"valuePath\"", "\"symbologyPath\"", "\"allowedSymbologies\"",
|
||||
"\"qqq-zpl-scene/1\"", "\"qqq-zpl-scene/2\"", "{", "}", "[", "]", ":", ",", "99999999999", "-1", "null", "\"/\"", "\\u0000"));
|
||||
int iterations = MutationCampaign.iterations(ITERATIONS);
|
||||
for(long seed : MutationCampaign.seeds(SEEDS))
|
||||
{
|
||||
MutationCampaign.Result result = campaign.run(seed, iterations, MutationCampaignTest::validateScene, Exception.class::isInstance);
|
||||
assertEquals(List.of(), result.findings(), "replay with -Dfuzz.seed=" + seed + " -Dfuzz.iterations=" + iterations);
|
||||
assertFalse(result.accepted() == 0 || result.refused() == 0, "the campaign must reach both acceptance and refusal: " + result);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The target: static validation of one scene on a stock all corpus scenes fit.
|
||||
***************************************************************************/
|
||||
private static void validateScene(byte[] scene) throws Exception
|
||||
{
|
||||
String source = new String(scene, StandardCharsets.UTF_8);
|
||||
ObjectNode request = Wire.JSON.createObjectNode();
|
||||
request.put("protocol", Wire.PROTOCOL).put("requestId", "mutation-campaign").put("operation", "VALIDATE").put("format", "ZPL").put("maximumBytes", 1024 * 1024).put("source", source);
|
||||
request.set("stock", Wire.JSON.valueToTree(Map.of("widthMicrons", 76200, "heightMicrons", 152400, "topMicrons", 2000, "rightMicrons", 2000, "bottomMicrons", 2000, "leftMicrons", 2000, "dpi", 203)));
|
||||
request.putObject("context");
|
||||
request.putArray("assets");
|
||||
ZplRenderer.validate(new RenderInput(request));
|
||||
JsonNode accepted = INDEPENDENT.readTree(source);
|
||||
assertEquals("qqq-zpl-scene/1", accepted.path("schema").textValue());
|
||||
assertTrue(accepted.path("elements").isArray() && accepted.path("elements").size() <= 1000);
|
||||
for(JsonNode element : accepted.path("elements"))
|
||||
{
|
||||
assertTrue(ELEMENTS.contains(element.path("type").textValue()), () -> "accepted element type " + element.path("type"));
|
||||
}
|
||||
}
|
||||
}
|
||||
+229
@@ -0,0 +1,229 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.renderer;
|
||||
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Arrays;
|
||||
import java.util.Base64;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.TreeSet;
|
||||
import java.util.stream.Stream;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Version 1 scenes are frozen. Every scene of the corpus in `compat-v1` must
|
||||
** render to exactly the bytes the released renderer (tag `v1.1.0-RC.2`) produced
|
||||
** for it. The stored bytes are never regenerated: a difference here is a change
|
||||
** to labels that are already printing, and is fixed in the code, not the corpus.
|
||||
*******************************************************************************/
|
||||
class ZplSceneOneCompatibilityTest
|
||||
{
|
||||
private static final String ROOT = "/compat-v1/";
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// every property a version 1 element reads, by element type; the corpus must use each one //
|
||||
////////////////////////////////////////////////////////////////////////////////////////////
|
||||
private static final Map<String, Set<String>> OPTIONS = Map.of(
|
||||
"text", Set.of("x", "y", "width", "height", "value", "valuePath"),
|
||||
"rasterText", Set.of("x", "y", "fontAsset", "fontSize", "width", "height", "rotation", "align", "lineHeight", "threshold", "value", "valuePath"),
|
||||
"box", Set.of("x", "y", "width", "height", "thickness"),
|
||||
"image", Set.of("x", "y", "asset"),
|
||||
"barcode", Set.of("x", "y", "symbology", "symbologyPath", "allowedSymbologies", "value", "valuePath", "scale", "quiet", "options", "payloadEncoding",
|
||||
"fit", "scannerSymbologyPath", "aimIdentifierPath"));
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** Each case file is one render request: a stock, a context, assets and a scene.
|
||||
***************************************************************************/
|
||||
static List<String> cases() throws Exception
|
||||
{
|
||||
try(Stream<Path> files = Files.list(Path.of(ZplSceneOneCompatibilityTest.class.getResource(ROOT + "cases").toURI())))
|
||||
{
|
||||
return (files.map(file -> file.getFileName().toString()).filter(name -> name.endsWith(".json")).map(name -> name.substring(0, name.length() - 5)).sorted().toList());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The released bytes, or the first position at which this build differs. What
|
||||
** this build produced is left in `target/compat-v1-actual` for inspection.
|
||||
***************************************************************************/
|
||||
@ParameterizedTest(name = "{0}")
|
||||
@MethodSource("cases")
|
||||
void rendersExactlyTheReleasedBytes(String name) throws Exception
|
||||
{
|
||||
byte[] actual = render(name);
|
||||
byte[] expected = resource("zpl/" + name + ".zpl");
|
||||
if(expected == null || !Arrays.equals(expected, actual))
|
||||
{
|
||||
Path directory = Files.createDirectories(Path.of("target", "compat-v1-actual"));
|
||||
Files.write(directory.resolve(name + ".zpl"), actual);
|
||||
}
|
||||
assertNotNull(expected, "No released bytes are stored for " + name);
|
||||
int difference = Arrays.mismatch(expected, actual);
|
||||
if(difference >= 0)
|
||||
{
|
||||
fail("Version 1 scene " + name + " no longer renders the released bytes: first difference at byte " + difference
|
||||
+ " (released " + expected.length + " bytes, now " + actual.length + ")");
|
||||
}
|
||||
assertEquals(manifest().get(name), Wire.sha256(actual));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The manifest names exactly the cases, and each stored file has its hash, so
|
||||
** a case cannot be dropped or its bytes edited without this failing.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void manifestNamesExactlyTheCasesAndTheirStoredBytes() throws Exception
|
||||
{
|
||||
Map<String, String> manifest = manifest();
|
||||
assertEquals(cases(), List.copyOf(manifest.keySet()));
|
||||
assertFalse(manifest.isEmpty());
|
||||
for(Map.Entry<String, String> entry : manifest.entrySet())
|
||||
{
|
||||
byte[] stored = resource("zpl/" + entry.getKey() + ".zpl");
|
||||
assertNotNull(stored, entry.getKey());
|
||||
assertEquals(entry.getValue(), Wire.sha256(stored), entry.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** The corpus is only a proof if it reaches every element type and every
|
||||
** property version 1 reads, at each resolution the renderer accepts.
|
||||
***************************************************************************/
|
||||
@Test
|
||||
void corpusUsesEveryVersionOneElementOptionAndResolution() throws Exception
|
||||
{
|
||||
Map<String, Set<String>> used = new TreeMap<>();
|
||||
Set<Integer> resolutions = new TreeSet<>();
|
||||
for(String name : cases())
|
||||
{
|
||||
JsonNode definition = definition(name);
|
||||
resolutions.add(definition.path("stock").path("dpi").intValue());
|
||||
assertEquals("qqq-zpl-scene/1", definition.path("scene").path("schema").textValue(), name);
|
||||
for(JsonNode element : definition.path("scene").path("elements"))
|
||||
{
|
||||
Set<String> properties = used.computeIfAbsent(element.path("type").textValue(), type -> new HashSet<>());
|
||||
element.fieldNames().forEachRemaining(properties::add);
|
||||
}
|
||||
}
|
||||
assertEquals(Set.of(203, 300, 600), resolutions);
|
||||
assertEquals(OPTIONS.keySet(), used.keySet());
|
||||
for(Map.Entry<String, Set<String>> entry : OPTIONS.entrySet())
|
||||
{
|
||||
assertTrue(used.get(entry.getKey()).containsAll(entry.getValue()), () -> entry.getKey() + " is missing one of " + entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** Render through the public protocol entry point, as the isolated worker does.
|
||||
***************************************************************************/
|
||||
private static byte[] render(String name) throws Exception
|
||||
{
|
||||
JsonNode definition = definition(name);
|
||||
ObjectNode request = Wire.JSON.createObjectNode();
|
||||
request.put("protocol", Wire.PROTOCOL).put("requestId", "compat-v1-" + name).put("operation", "RENDER").put("format", "ZPL").put("maximumBytes", 8 * 1024 * 1024);
|
||||
request.set("stock", definition.get("stock"));
|
||||
request.set("context", definition.get("context"));
|
||||
request.put("source", Wire.JSON.writeValueAsString(definition.get("scene")));
|
||||
var assets = request.putArray("assets");
|
||||
for(JsonNode declared : definition.path("assets"))
|
||||
{
|
||||
byte[] bytes;
|
||||
try(InputStream stream = ZplSceneOneCompatibilityTest.class.getResourceAsStream(declared.path("resource").textValue()))
|
||||
{
|
||||
bytes = java.util.Objects.requireNonNull(stream, declared.path("resource").textValue()).readAllBytes();
|
||||
}
|
||||
ObjectNode asset = ((ObjectNode) declared.deepCopy()).put("base64", Base64.getEncoder().encodeToString(bytes)).put("sha256", Wire.sha256(bytes));
|
||||
asset.remove("resource");
|
||||
assets.add(asset);
|
||||
}
|
||||
Map<String, Object> response = RendererMain.process(request);
|
||||
assertEquals("OK", response.get("outcome"), name);
|
||||
return (Base64.getDecoder().decode((String) response.get("base64")));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** One case definition.
|
||||
***************************************************************************/
|
||||
private static JsonNode definition(String name) throws Exception
|
||||
{
|
||||
return (Wire.JSON.readTree(java.util.Objects.requireNonNull(resource("cases/" + name + ".json"), name)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** `SHA256SUMS` in the form `sha256sum` writes and checks: hash, two spaces, path.
|
||||
***************************************************************************/
|
||||
private static Map<String, String> manifest() throws Exception
|
||||
{
|
||||
Map<String, String> hashes = new TreeMap<>();
|
||||
byte[] sums = resource("SHA256SUMS");
|
||||
for(String line : sums == null ? new String[0] : new String(sums, StandardCharsets.US_ASCII).split("\n"))
|
||||
{
|
||||
assertTrue(line.matches("[0-9a-f]{64} zpl/[a-z0-9-]+\\.zpl"), line);
|
||||
hashes.put(line.substring(70, line.length() - 4), line.substring(0, 64));
|
||||
}
|
||||
return (hashes);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
** Corpus bytes, or null when the corpus has no such file.
|
||||
***************************************************************************/
|
||||
private static byte[] resource(String path) throws Exception
|
||||
{
|
||||
try(InputStream stream = ZplSceneOneCompatibilityTest.class.getResourceAsStream(ROOT + path))
|
||||
{
|
||||
return (stream == null ? null : stream.readAllBytes());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# Version 1 compatibility corpus
|
||||
|
||||
Scenes with schema `qqq-zpl-scene/1` are frozen: a label that prints today must print the same bytes after any
|
||||
later change. This directory holds 42 render requests and the exact ZPL the released renderer produced for each.
|
||||
|
||||
| Path | Content |
|
||||
|---|---|
|
||||
| `cases/<name>.json` | One render request: `stock` (with its `dpi`), `context`, `assets` and the `scene`. |
|
||||
| `zpl/<name>.zpl` | The bytes the released renderer returned for that request. |
|
||||
| `SHA256SUMS` | The SHA-256 of every stored output, in the form `sha256sum -c` reads. |
|
||||
| `assets/test-mark.png` | A synthetic 48 x 24 image: a frame, a grey ramp and a transparency ramp. |
|
||||
|
||||
Fonts come from the existing test resources (`/fonts/Abel-Regular.ttf`, `/fonts/jetbrains-mono/`).
|
||||
|
||||
## What it covers
|
||||
|
||||
- The shapes Forge publishes, at the 203 and 300 dpi its printers report: the plain Echo label (dynamic symbology
|
||||
from an allowlist, fitted), the scanner-fidelity label (scanner label and AIM identifier), the compact GS1-128
|
||||
label (`fit` and `quiet`, with the human-readable line as `text` in font 0) and the centred GS1-128 document
|
||||
(`rasterText` with `fontAsset`; its barcode carries an `align` key, which version 1 ignores).
|
||||
- The examples of `renderer/README.md` and `renderer/BARCODE-FIT.md`, verbatim.
|
||||
- One scene per element type and option at 203, 300 and 600 dpi: `text`, `box`, `image`, `rasterText` (alignment,
|
||||
rotation, line height, threshold, wrapping, three faces) and `barcode` (scale, options, bound values, and all 13
|
||||
fit-qualified symbologies).
|
||||
|
||||
Every value is synthetic (`TEST-0001`, `(01)00012345678905(11)260101(21)TEST0001`, `example.invalid`).
|
||||
|
||||
Not covered, because they need the native Zint provider that exists only in the renderer image: `payloadEncoding`
|
||||
`BASE64` and the Zint-backed symbologies. The image qualifications cover those.
|
||||
|
||||
## Where the bytes came from
|
||||
|
||||
They were produced by the source of tag `v1.1.0-RC.2` (commit `e9ffba484e8d97f9853cb071cdac14f3bfd7acda`,
|
||||
renderer `qqq-renderer-0.1.0`, catalog `qqq-barcodes-9`), not by the branch that added this directory:
|
||||
`ZplSceneOneCompatibilityTest` and `cases/` were copied into a checkout of that tag and run there with no stored
|
||||
outputs. The test fails in that state and leaves what it rendered in `target/compat-v1-actual`; those files are
|
||||
`zpl/`. The run was on Temurin 21.0.12 on Windows, and the same test then passed against the same tag on Temurin
|
||||
21.0.9 on Linux (the CI image), so the `rasterText` pixels do not depend on either platform.
|
||||
|
||||
## Rules
|
||||
|
||||
- Never regenerate `zpl/` or `SHA256SUMS`, and never edit a case. If `ZplSceneOneCompatibilityTest` fails, the
|
||||
code changed what a version 1 scene prints; fix the code. The first differing byte is in the failure message
|
||||
and the new bytes are in `renderer/target/compat-v1-actual`.
|
||||
- A new case may be added only with bytes produced the same way, from a tag that is in production.
|
||||
- `bridges/renderer` reads this directory in place (its own `ZplSceneOneCompatibilityTest` proves each stored
|
||||
output passes `ZplOutputPolicy`), so there is one copy.
|
||||
@@ -0,0 +1,42 @@
|
||||
ff0e556b910d9cf3a62cec78f388788c7a466942d8d43462d6cc8ff93d8a961c zpl/barcode-fit-linear-203.zpl
|
||||
29f10d73be75d3c50d6f4b6a034a5d3819173593effa13e043d62f8a9b49e342 zpl/barcode-fit-linear-300.zpl
|
||||
6ba73d75d91b5b7a204b2d8cc0c691438a0608872a0904ba8aa3fc3542c4a04e zpl/barcode-fit-linear-600.zpl
|
||||
7c38e5f1d3816375b002f34a97473d543b57f538d91a6b93aec56f7fad96fc8c zpl/barcode-fit-matrix-203.zpl
|
||||
dfaecb170fabd6a9d0214075f24f11c374edfd36a657e7d1acc0fe9fb480b365 zpl/barcode-fit-matrix-300.zpl
|
||||
c2f397bc2503f087b342038c455f7aff9f279139dabce79f12d2e03f3a8ed242 zpl/barcode-fit-matrix-600.zpl
|
||||
bde75c5c99ef064df4159385686c0a068ae0a82310a31b7703f16d8473d25f26 zpl/barcode-scale-203.zpl
|
||||
02b16ec29d0cb9452cc787ca970181e53f6d88a5fa495aa16b6e131309c02b5f zpl/barcode-scale-300.zpl
|
||||
7ce8d401428ff1c1ccf7587d1b36e5810a0c8762ffb5d217cf7e787b3a4d5806 zpl/barcode-scale-600.zpl
|
||||
d24c7334422a6268566f6fc5826ed1a6f746a3c06fee15f251eabae93b15b0c5 zpl/box-203.zpl
|
||||
97ee29fa76f9359351101c58aa9a72ca81b5e355cc609e42d1780af817f37562 zpl/box-300.zpl
|
||||
d6874a29d5459c3d2f4b027108c9829cb9b0d5bdff7878fc8c4a5da8c55d5c72 zpl/box-600.zpl
|
||||
89fe7d52804801fae99e53bfabada63eb08f85222f599abaa4bb4aea26869f64 zpl/forge-gs1-compact-203.zpl
|
||||
5ac73d061da31c6a45da37e91eecb092803a5036cd8e39b96af26f109e2310f9 zpl/forge-gs1-compact-300.zpl
|
||||
90065471a443d35c30a9426f9d0ac62773114ff57d484bea373b444e8ef3ee9a zpl/forge-gs1-raster-203.zpl
|
||||
205a0ac35ce6df151b8c7feac081e8b1cab3fbdc8ca6a685e601a2782ddf3869 zpl/forge-gs1-raster-300.zpl
|
||||
a626755d7fe9499b5b9b2dbb4bc64bdb60ba5857f267115b4762ab32276e8b30 zpl/forge-plain-code128-203.zpl
|
||||
40552f1f04f58b67d69464e1b58a2ac3eeda98ac5af6d1a96a8b1b128637add5 zpl/forge-plain-code128-300.zpl
|
||||
8d5391528d92f8afe8d6fb62df9f9ce3b6baa6bf3bfdf4133a7cfe60399b74e1 zpl/forge-plain-qr-203.zpl
|
||||
a626755d7fe9499b5b9b2dbb4bc64bdb60ba5857f267115b4762ab32276e8b30 zpl/forge-scanner-code128-203.zpl
|
||||
b5ea4f928c670ee06027b05406d45ab829c29d1676b05ca34728b350dfa60582 zpl/forge-scanner-ean13-203.zpl
|
||||
b2b41c26316c843ef2156179a57e145c57f5006bcdc8f1497d2d263c743b948d zpl/forge-scanner-ean13-300.zpl
|
||||
e45cb088bd56c470aa2ad0f7904e7cf97a75ada21b2cf0075679accc0a0456b6 zpl/image-203.zpl
|
||||
b17fdf526032eb4fe6892f7737cb6c7a1069305c4ff85a9a4d902ebf29a1d778 zpl/image-300.zpl
|
||||
0ae0dde4208c8696bfd36dd427e8f7735dbce3961572b6225f5cf4868ae55b2c zpl/image-600.zpl
|
||||
0b100f9a37a78ceede0dbaaec9ba1e9bbf352b7675bd8900ede3faa5dc855ce7 zpl/raster-text-layout-203.zpl
|
||||
ba4a8eea59afcfd67dbcf2982f70cc3b7083dd3259c439793d79f4cae78f6483 zpl/raster-text-layout-300.zpl
|
||||
d7682aecebdbcc80fd2ade6cb2108cccd991fe05af35a28554111b00cdceb442 zpl/raster-text-layout-600.zpl
|
||||
44231f071dc6131a13d9624454dcb796a7355d167040dfdc68ca7acefb12e06d zpl/raster-text-rotation-203.zpl
|
||||
2a3a8a2529279a2ffe79771ea2f18aa66b08357a5ef5e49d52eaba60d3b2e781 zpl/raster-text-rotation-300.zpl
|
||||
5e68955f87763277798413c26b9486f4ef5a60f3458c734612acbe6e9de813c3 zpl/raster-text-rotation-600.zpl
|
||||
d4a61011f45eb4057dcbd5e2f7ee44e911b1c6ba9bba512a94ed45906143cce8 zpl/readme-barcode-fit-203.zpl
|
||||
fc4fe98d71292b4cedb2bc15343c6b0ae1e71f3ad606422cd197429cf7d8658e zpl/readme-barcode-fit-300.zpl
|
||||
4ff078a28668055a8a480fe909185c13977fdb665ab5d2acac882267e72a6fea zpl/readme-raster-text-203.zpl
|
||||
850b76e86ca32fbee963052b3df69b431f021f76080b192b2954e11c9efde84a zpl/readme-raster-text-300.zpl
|
||||
d094fd9bebc3d2131b7df1a5cb5b0fafcaefb226045f42985b91261e39e27ca4 zpl/readme-raster-text-600.zpl
|
||||
f4ce3ef8723bc893784b1dbcb93ff831f22bdc0959b9500b0644a9ecdf9ce781 zpl/readme-zpl-scene-203.zpl
|
||||
198762809d8d21e49c71dbcfcefb2f61315e5c182b0992ed136b10bb3968b5b0 zpl/readme-zpl-scene-300.zpl
|
||||
48271003bc87ec1c14f53ccdb6810f810d08b63079169258915080a0f89a0688 zpl/readme-zpl-scene-600.zpl
|
||||
2fd2eb3b5c9d761946b5c74656fc88838ed6f79848ea5eb296171539e25cd2e6 zpl/text-font0-203.zpl
|
||||
dbd3697539e011d6c9d4c34185b849184fc22d5b836819df200d98478720ce06 zpl/text-font0-300.zpl
|
||||
9ac70a9aa2bb8a5d41c13143617d338f1c3a50b0fea0f01d5054869c0bc3f31c zpl/text-font0-600.zpl
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 333 B |
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"description": "Every fit-qualified linear symbology in a fixed physical box.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 2000,
|
||||
"rightMicrons": 2000,
|
||||
"bottomMicrons": 2000,
|
||||
"leftMicrons": 2000,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 16,
|
||||
"symbology": "code128",
|
||||
"value": "TEST-0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 144,
|
||||
"symbology": "code39",
|
||||
"value": "TEST 0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 272,
|
||||
"symbology": "code93",
|
||||
"value": "TEST-0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 400,
|
||||
"symbology": "itf",
|
||||
"value": "0012345678",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 528,
|
||||
"symbology": "gs1-128",
|
||||
"value": "[01]00012345678905[11]260101[21]TEST0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 656,
|
||||
"symbology": "ean13",
|
||||
"value": "001234567890",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 784,
|
||||
"symbology": "ean8",
|
||||
"value": "0012345",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 912,
|
||||
"symbology": "upca",
|
||||
"value": "01234567890",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 1040,
|
||||
"symbology": "upce",
|
||||
"value": "0123456",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"description": "Every fit-qualified linear symbology in a fixed physical box.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 2000,
|
||||
"rightMicrons": 2000,
|
||||
"bottomMicrons": 2000,
|
||||
"leftMicrons": 2000,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 24,
|
||||
"symbology": "code128",
|
||||
"value": "TEST-0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 213,
|
||||
"symbology": "code39",
|
||||
"value": "TEST 0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 402,
|
||||
"symbology": "code93",
|
||||
"value": "TEST-0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 591,
|
||||
"symbology": "itf",
|
||||
"value": "0012345678",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 780,
|
||||
"symbology": "gs1-128",
|
||||
"value": "[01]00012345678905[11]260101[21]TEST0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 969,
|
||||
"symbology": "ean13",
|
||||
"value": "001234567890",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 1158,
|
||||
"symbology": "ean8",
|
||||
"value": "0012345",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 1347,
|
||||
"symbology": "upca",
|
||||
"value": "01234567890",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 1536,
|
||||
"symbology": "upce",
|
||||
"value": "0123456",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"description": "Every fit-qualified linear symbology in a fixed physical box.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 2000,
|
||||
"rightMicrons": 2000,
|
||||
"bottomMicrons": 2000,
|
||||
"leftMicrons": 2000,
|
||||
"dpi": 600
|
||||
},
|
||||
"context": {},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 48,
|
||||
"symbology": "code128",
|
||||
"value": "TEST-0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 426,
|
||||
"symbology": "code39",
|
||||
"value": "TEST 0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 804,
|
||||
"symbology": "code93",
|
||||
"value": "TEST-0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 1182,
|
||||
"symbology": "itf",
|
||||
"value": "0012345678",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 1560,
|
||||
"symbology": "gs1-128",
|
||||
"value": "[01]00012345678905[11]260101[21]TEST0001",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 1938,
|
||||
"symbology": "ean13",
|
||||
"value": "001234567890",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 2316,
|
||||
"symbology": "ean8",
|
||||
"value": "0012345",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 2694,
|
||||
"symbology": "upca",
|
||||
"value": "01234567890",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 3072,
|
||||
"symbology": "upce",
|
||||
"value": "0123456",
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 60000,
|
||||
"heightMicrons": 12000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"description": "Every fit-qualified matrix and stacked symbology in a fixed physical box, with the minimum quiet zone.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 2000,
|
||||
"rightMicrons": 2000,
|
||||
"bottomMicrons": 2000,
|
||||
"leftMicrons": 2000,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"value": "TEST-0001"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 16,
|
||||
"symbology": "qr",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 15000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 160,
|
||||
"symbology": "datamatrix",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 15000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 304,
|
||||
"symbology": "aztec",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 15000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 16,
|
||||
"y": 448,
|
||||
"symbology": "pdf417",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 40000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"description": "Every fit-qualified matrix and stacked symbology in a fixed physical box, with the minimum quiet zone.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 2000,
|
||||
"rightMicrons": 2000,
|
||||
"bottomMicrons": 2000,
|
||||
"leftMicrons": 2000,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"value": "TEST-0001"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 24,
|
||||
"symbology": "qr",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 15000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 237,
|
||||
"symbology": "datamatrix",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 15000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 450,
|
||||
"symbology": "aztec",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 15000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 24,
|
||||
"y": 663,
|
||||
"symbology": "pdf417",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 40000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"description": "Every fit-qualified matrix and stacked symbology in a fixed physical box, with the minimum quiet zone.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 2000,
|
||||
"rightMicrons": 2000,
|
||||
"bottomMicrons": 2000,
|
||||
"leftMicrons": 2000,
|
||||
"dpi": 600
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"value": "TEST-0001"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 48,
|
||||
"symbology": "qr",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 15000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 474,
|
||||
"symbology": "datamatrix",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 15000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 900,
|
||||
"symbology": "aztec",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 15000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 48,
|
||||
"y": 1326,
|
||||
"symbology": "pdf417",
|
||||
"valuePath": "/record/value",
|
||||
"quiet": 4,
|
||||
"fit": {
|
||||
"widthMicrons": 40000,
|
||||
"heightMicrons": 15000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"description": "Barcodes at an explicit scale: typed options, the explicit UTF8 payload encoding, a bound value and a matrix symbology.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"url": "https://example.invalid/test/0001"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 20,
|
||||
"y": 20,
|
||||
"symbology": "code128",
|
||||
"scale": 2,
|
||||
"quiet": 10,
|
||||
"value": "TEST-0001",
|
||||
"options": {
|
||||
"barHeight": 40
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 20,
|
||||
"y": 130,
|
||||
"symbology": "code39",
|
||||
"scale": 1,
|
||||
"quiet": 10,
|
||||
"value": "TEST 0001",
|
||||
"payloadEncoding": "UTF8"
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 20,
|
||||
"y": 230,
|
||||
"symbology": "qr",
|
||||
"scale": 3,
|
||||
"quiet": 4,
|
||||
"valuePath": "/record/url"
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 200,
|
||||
"y": 230,
|
||||
"symbology": "datamatrix",
|
||||
"scale": 4,
|
||||
"quiet": 4,
|
||||
"value": "TEST-0001"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"description": "Barcodes at an explicit scale: typed options, the explicit UTF8 payload encoding, a bound value and a matrix symbology.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"url": "https://example.invalid/test/0001"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 30,
|
||||
"y": 30,
|
||||
"symbology": "code128",
|
||||
"scale": 3,
|
||||
"quiet": 10,
|
||||
"value": "TEST-0001",
|
||||
"options": {
|
||||
"barHeight": 40
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 30,
|
||||
"y": 192,
|
||||
"symbology": "code39",
|
||||
"scale": 1,
|
||||
"quiet": 10,
|
||||
"value": "TEST 0001",
|
||||
"payloadEncoding": "UTF8"
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 30,
|
||||
"y": 340,
|
||||
"symbology": "qr",
|
||||
"scale": 4,
|
||||
"quiet": 4,
|
||||
"valuePath": "/record/url"
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 296,
|
||||
"y": 340,
|
||||
"symbology": "datamatrix",
|
||||
"scale": 6,
|
||||
"quiet": 4,
|
||||
"value": "TEST-0001"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"description": "Barcodes at an explicit scale: typed options, the explicit UTF8 payload encoding, a bound value and a matrix symbology.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 600
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"url": "https://example.invalid/test/0001"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 59,
|
||||
"y": 59,
|
||||
"symbology": "code128",
|
||||
"scale": 6,
|
||||
"quiet": 10,
|
||||
"value": "TEST-0001",
|
||||
"options": {
|
||||
"barHeight": 40
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 59,
|
||||
"y": 384,
|
||||
"symbology": "code39",
|
||||
"scale": 3,
|
||||
"quiet": 10,
|
||||
"value": "TEST 0001",
|
||||
"payloadEncoding": "UTF8"
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 59,
|
||||
"y": 680,
|
||||
"symbology": "qr",
|
||||
"scale": 9,
|
||||
"quiet": 4,
|
||||
"valuePath": "/record/url"
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 591,
|
||||
"y": 680,
|
||||
"symbology": "datamatrix",
|
||||
"scale": 12,
|
||||
"quiet": 4,
|
||||
"value": "TEST-0001"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"description": "Boxes: an outline, a filled square, a horizontal rule and a vertical rule.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "box",
|
||||
"x": 20,
|
||||
"y": 20,
|
||||
"width": 200,
|
||||
"height": 100,
|
||||
"thickness": 3
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 240,
|
||||
"y": 20,
|
||||
"width": 60,
|
||||
"height": 60,
|
||||
"thickness": 30
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 20,
|
||||
"y": 140,
|
||||
"width": 500,
|
||||
"height": 2,
|
||||
"thickness": 2
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 560,
|
||||
"y": 20,
|
||||
"width": 2,
|
||||
"height": 200,
|
||||
"thickness": 2
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"description": "Boxes: an outline, a filled square, a horizontal rule and a vertical rule.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "box",
|
||||
"x": 30,
|
||||
"y": 30,
|
||||
"width": 296,
|
||||
"height": 148,
|
||||
"thickness": 4
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 355,
|
||||
"y": 30,
|
||||
"width": 89,
|
||||
"height": 89,
|
||||
"thickness": 44
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 30,
|
||||
"y": 207,
|
||||
"width": 739,
|
||||
"height": 3,
|
||||
"thickness": 3
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 828,
|
||||
"y": 30,
|
||||
"width": 3,
|
||||
"height": 296,
|
||||
"thickness": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"description": "Boxes: an outline, a filled square, a horizontal rule and a vertical rule.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 600
|
||||
},
|
||||
"context": {},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "box",
|
||||
"x": 59,
|
||||
"y": 59,
|
||||
"width": 591,
|
||||
"height": 296,
|
||||
"thickness": 9
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 709,
|
||||
"y": 59,
|
||||
"width": 177,
|
||||
"height": 177,
|
||||
"thickness": 89
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 59,
|
||||
"y": 414,
|
||||
"width": 1478,
|
||||
"height": 6,
|
||||
"thickness": 6
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 1655,
|
||||
"y": 59,
|
||||
"width": 6,
|
||||
"height": 591,
|
||||
"thickness": 6
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"description": "Forge compact GS1-128 label: fitted bars with quiet zone and the human-readable line in printer font 0.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 25400,
|
||||
"topMicrons": 3000,
|
||||
"rightMicrons": 3000,
|
||||
"bottomMicrons": 3000,
|
||||
"leftMicrons": 3000,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"rendererValue": "[01]00012345678905[11]260101[21]TEST0001",
|
||||
"humanReadable": "(01)00012345678905(11)260101(21)TEST0001"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbology": "gs1-128",
|
||||
"valuePath": "/record/rendererValue",
|
||||
"quiet": 10,
|
||||
"x": 32,
|
||||
"y": 32,
|
||||
"fit": {
|
||||
"widthMicrons": 93600,
|
||||
"heightMicrons": 12400
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"valuePath": "/record/humanReadable",
|
||||
"x": 32,
|
||||
"y": 144,
|
||||
"height": 24,
|
||||
"width": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"description": "Forge compact GS1-128 label: fitted bars with quiet zone and the human-readable line in printer font 0.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 25400,
|
||||
"topMicrons": 3000,
|
||||
"rightMicrons": 3000,
|
||||
"bottomMicrons": 3000,
|
||||
"leftMicrons": 3000,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"rendererValue": "[01]00012345678905[11]260101[21]TEST0001",
|
||||
"humanReadable": "(01)00012345678905(11)260101(21)TEST0001"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbology": "gs1-128",
|
||||
"valuePath": "/record/rendererValue",
|
||||
"quiet": 10,
|
||||
"x": 48,
|
||||
"y": 48,
|
||||
"fit": {
|
||||
"widthMicrons": 93600,
|
||||
"heightMicrons": 12400
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"valuePath": "/record/humanReadable",
|
||||
"x": 48,
|
||||
"y": 212,
|
||||
"height": 36,
|
||||
"width": 15
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"description": "The Forge centred GS1-128 document drawn for a 203 dpi printer.",
|
||||
"stock": {
|
||||
"widthMicrons": 103504,
|
||||
"heightMicrons": 25400,
|
||||
"topMicrons": 3000,
|
||||
"rightMicrons": 3000,
|
||||
"bottomMicrons": 3000,
|
||||
"leftMicrons": 3000,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"rendererValue": "[01]00012345678905[11]260101[21]TEST0001",
|
||||
"humanReadable": "(01)00012345678905(11)260101(21)TEST0001"
|
||||
}
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"name": "forge-echo-abel-regular",
|
||||
"resource": "/fonts/Abel-Regular.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Abel",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "normal"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbology": "gs1-128",
|
||||
"valuePath": "/record/rendererValue",
|
||||
"quiet": 10,
|
||||
"x": 32,
|
||||
"y": 32,
|
||||
"fit": {
|
||||
"widthMicrons": 95504,
|
||||
"heightMicrons": 16000
|
||||
},
|
||||
"align": "center"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"valuePath": "/record/humanReadable",
|
||||
"x": 32,
|
||||
"y": 162,
|
||||
"fontAsset": "forge-echo-abel-regular",
|
||||
"fontSize": 30,
|
||||
"width": 763,
|
||||
"height": 40,
|
||||
"align": "center"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"description": "Forge centred GS1-128 document: fitted bars carrying an align key that version 1 ignores, and the human-readable line as rasterText in an uploaded face.",
|
||||
"stock": {
|
||||
"widthMicrons": 103504,
|
||||
"heightMicrons": 25400,
|
||||
"topMicrons": 3000,
|
||||
"rightMicrons": 3000,
|
||||
"bottomMicrons": 3000,
|
||||
"leftMicrons": 3000,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"rendererValue": "[01]00012345678905[11]260101[21]TEST0001",
|
||||
"humanReadable": "(01)00012345678905(11)260101(21)TEST0001"
|
||||
}
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"name": "forge-echo-abel-regular",
|
||||
"resource": "/fonts/Abel-Regular.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Abel",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "normal"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbology": "gs1-128",
|
||||
"valuePath": "/record/rendererValue",
|
||||
"quiet": 10,
|
||||
"x": 36,
|
||||
"y": 36,
|
||||
"fit": {
|
||||
"widthMicrons": 95504,
|
||||
"heightMicrons": 16000
|
||||
},
|
||||
"align": "center"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"valuePath": "/record/humanReadable",
|
||||
"x": 36,
|
||||
"y": 206,
|
||||
"fontAsset": "forge-echo-abel-regular",
|
||||
"fontSize": 44,
|
||||
"width": 1128,
|
||||
"height": 58,
|
||||
"align": "center"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"description": "Forge plain Echo label: dynamic symbology from an allowlist, fitted to the whole label less its inset.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 25400,
|
||||
"topMicrons": 3000,
|
||||
"rightMicrons": 3000,
|
||||
"bottomMicrons": 3000,
|
||||
"leftMicrons": 3000,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"rendererSymbology": "code128",
|
||||
"barcode": "TEST-0001"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbologyPath": "/record/rendererSymbology",
|
||||
"allowedSymbologies": [
|
||||
"code128",
|
||||
"qr",
|
||||
"code39",
|
||||
"datamatrix",
|
||||
"pdf417",
|
||||
"aztec"
|
||||
],
|
||||
"valuePath": "/record/barcode",
|
||||
"x": 32,
|
||||
"y": 32,
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 93600,
|
||||
"heightMicrons": 17400
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"description": "Forge plain Echo label: dynamic symbology from an allowlist, fitted to the whole label less its inset.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 25400,
|
||||
"topMicrons": 3000,
|
||||
"rightMicrons": 3000,
|
||||
"bottomMicrons": 3000,
|
||||
"leftMicrons": 3000,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"rendererSymbology": "code128",
|
||||
"barcode": "TEST-0001"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbologyPath": "/record/rendererSymbology",
|
||||
"allowedSymbologies": [
|
||||
"code128",
|
||||
"qr",
|
||||
"code39",
|
||||
"datamatrix",
|
||||
"pdf417",
|
||||
"aztec"
|
||||
],
|
||||
"valuePath": "/record/barcode",
|
||||
"x": 48,
|
||||
"y": 48,
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 93600,
|
||||
"heightMicrons": 17400
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"description": "Forge plain Echo label resolving a matrix symbology from the same allowlist.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 25400,
|
||||
"topMicrons": 3000,
|
||||
"rightMicrons": 3000,
|
||||
"bottomMicrons": 3000,
|
||||
"leftMicrons": 3000,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"rendererSymbology": "qr",
|
||||
"barcode": "TEST-0001"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbologyPath": "/record/rendererSymbology",
|
||||
"allowedSymbologies": [
|
||||
"code128",
|
||||
"qr",
|
||||
"code39",
|
||||
"datamatrix",
|
||||
"pdf417",
|
||||
"aztec"
|
||||
],
|
||||
"valuePath": "/record/barcode",
|
||||
"x": 32,
|
||||
"y": 32,
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 93600,
|
||||
"heightMicrons": 17400
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"description": "Forge scanner-fidelity Echo label for a symbology whose payload is passed through unchanged.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 25400,
|
||||
"topMicrons": 3000,
|
||||
"rightMicrons": 3000,
|
||||
"bottomMicrons": 3000,
|
||||
"leftMicrons": 3000,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"rendererSymbology": "code128",
|
||||
"barcode": "TEST-0001",
|
||||
"symbology": "CODE128",
|
||||
"aimIdentifier": "]C0"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbologyPath": "/record/rendererSymbology",
|
||||
"allowedSymbologies": [
|
||||
"code128",
|
||||
"qr",
|
||||
"code39",
|
||||
"datamatrix",
|
||||
"pdf417",
|
||||
"aztec",
|
||||
"ean13",
|
||||
"ean8",
|
||||
"upca",
|
||||
"upce"
|
||||
],
|
||||
"valuePath": "/record/barcode",
|
||||
"x": 32,
|
||||
"y": 32,
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 93600,
|
||||
"heightMicrons": 17400
|
||||
},
|
||||
"scannerSymbologyPath": "/record/symbology",
|
||||
"aimIdentifierPath": "/record/aimIdentifier"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"description": "Forge scanner-fidelity Echo label: the recorded scanner label and AIM identifier are verified and an EAN-13 is reproduced.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 25400,
|
||||
"topMicrons": 3000,
|
||||
"rightMicrons": 3000,
|
||||
"bottomMicrons": 3000,
|
||||
"leftMicrons": 3000,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"rendererSymbology": "ean13",
|
||||
"barcode": "0012345678905",
|
||||
"symbology": "LABEL-TYPE-EAN13",
|
||||
"aimIdentifier": "]E0"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbologyPath": "/record/rendererSymbology",
|
||||
"allowedSymbologies": [
|
||||
"code128",
|
||||
"qr",
|
||||
"code39",
|
||||
"datamatrix",
|
||||
"pdf417",
|
||||
"aztec",
|
||||
"ean13",
|
||||
"ean8",
|
||||
"upca",
|
||||
"upce"
|
||||
],
|
||||
"valuePath": "/record/barcode",
|
||||
"x": 32,
|
||||
"y": 32,
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 93600,
|
||||
"heightMicrons": 17400
|
||||
},
|
||||
"scannerSymbologyPath": "/record/symbology",
|
||||
"aimIdentifierPath": "/record/aimIdentifier"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"description": "Forge scanner-fidelity Echo label: the recorded scanner label and AIM identifier are verified and an EAN-13 is reproduced.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 25400,
|
||||
"topMicrons": 3000,
|
||||
"rightMicrons": 3000,
|
||||
"bottomMicrons": 3000,
|
||||
"leftMicrons": 3000,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"rendererSymbology": "ean13",
|
||||
"barcode": "0012345678905",
|
||||
"symbology": "LABEL-TYPE-EAN13",
|
||||
"aimIdentifier": "]E0"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbologyPath": "/record/rendererSymbology",
|
||||
"allowedSymbologies": [
|
||||
"code128",
|
||||
"qr",
|
||||
"code39",
|
||||
"datamatrix",
|
||||
"pdf417",
|
||||
"aztec",
|
||||
"ean13",
|
||||
"ean8",
|
||||
"upca",
|
||||
"upce"
|
||||
],
|
||||
"valuePath": "/record/barcode",
|
||||
"x": 48,
|
||||
"y": 48,
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 93600,
|
||||
"heightMicrons": 17400
|
||||
},
|
||||
"scannerSymbologyPath": "/record/symbology",
|
||||
"aimIdentifierPath": "/record/aimIdentifier"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"description": "Image assets print at their pixel size; grey and partly transparent pixels are thresholded.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {},
|
||||
"assets": [
|
||||
{
|
||||
"name": "logo",
|
||||
"resource": "/compat-v1/assets/test-mark.png",
|
||||
"mediaType": "image/png"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "image",
|
||||
"x": 20,
|
||||
"y": 20,
|
||||
"asset": "logo"
|
||||
},
|
||||
{
|
||||
"type": "image",
|
||||
"x": 100,
|
||||
"y": 60,
|
||||
"asset": "logo"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"description": "Image assets print at their pixel size; grey and partly transparent pixels are thresholded.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {},
|
||||
"assets": [
|
||||
{
|
||||
"name": "logo",
|
||||
"resource": "/compat-v1/assets/test-mark.png",
|
||||
"mediaType": "image/png"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "image",
|
||||
"x": 30,
|
||||
"y": 30,
|
||||
"asset": "logo"
|
||||
},
|
||||
{
|
||||
"type": "image",
|
||||
"x": 148,
|
||||
"y": 89,
|
||||
"asset": "logo"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"description": "Image assets print at their pixel size; grey and partly transparent pixels are thresholded.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 600
|
||||
},
|
||||
"context": {},
|
||||
"assets": [
|
||||
{
|
||||
"name": "logo",
|
||||
"resource": "/compat-v1/assets/test-mark.png",
|
||||
"mediaType": "image/png"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "image",
|
||||
"x": 59,
|
||||
"y": 59,
|
||||
"asset": "logo"
|
||||
},
|
||||
{
|
||||
"type": "image",
|
||||
"x": 296,
|
||||
"y": 177,
|
||||
"asset": "logo"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"description": "rasterText layout options: default left, centre and right alignment, a threshold either side of the default, an explicit line height with LF, and automatic wrapping.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"name": "Centre Test 0001"
|
||||
}
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"name": "mono",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Regular.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "normal"
|
||||
},
|
||||
{
|
||||
"name": "forge-echo-abel-regular",
|
||||
"resource": "/fonts/Abel-Regular.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Abel",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "normal"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 20,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 24,
|
||||
"width": 400,
|
||||
"height": 40,
|
||||
"value": "LEFT TEST 0001"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 70,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 24,
|
||||
"width": 400,
|
||||
"height": 40,
|
||||
"valuePath": "/record/name",
|
||||
"align": "center"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 120,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 24,
|
||||
"width": 400,
|
||||
"height": 40,
|
||||
"value": "RIGHT TEST 0001",
|
||||
"align": "right",
|
||||
"threshold": 96
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 170,
|
||||
"fontAsset": "forge-echo-abel-regular",
|
||||
"fontSize": 28,
|
||||
"width": 400,
|
||||
"height": 100,
|
||||
"value": "LINE ONE\nLINE TWO\nLINE THREE",
|
||||
"lineHeight": 30,
|
||||
"threshold": 200,
|
||||
"align": "left"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 280,
|
||||
"fontAsset": "forge-echo-abel-regular",
|
||||
"fontSize": 24,
|
||||
"width": 300,
|
||||
"height": 120,
|
||||
"value": "Automatic wrapping of a longer synthetic test sentence 0001"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"description": "rasterText layout options: default left, centre and right alignment, a threshold either side of the default, an explicit line height with LF, and automatic wrapping.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"name": "Centre Test 0001"
|
||||
}
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"name": "mono",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Regular.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "normal"
|
||||
},
|
||||
{
|
||||
"name": "forge-echo-abel-regular",
|
||||
"resource": "/fonts/Abel-Regular.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Abel",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "normal"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 30,
|
||||
"y": 30,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 35,
|
||||
"width": 591,
|
||||
"height": 59,
|
||||
"value": "LEFT TEST 0001"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 30,
|
||||
"y": 103,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 35,
|
||||
"width": 591,
|
||||
"height": 59,
|
||||
"valuePath": "/record/name",
|
||||
"align": "center"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 30,
|
||||
"y": 177,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 35,
|
||||
"width": 591,
|
||||
"height": 59,
|
||||
"value": "RIGHT TEST 0001",
|
||||
"align": "right",
|
||||
"threshold": 96
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 30,
|
||||
"y": 251,
|
||||
"fontAsset": "forge-echo-abel-regular",
|
||||
"fontSize": 41,
|
||||
"width": 591,
|
||||
"height": 148,
|
||||
"value": "LINE ONE\nLINE TWO\nLINE THREE",
|
||||
"lineHeight": 44,
|
||||
"threshold": 200,
|
||||
"align": "left"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 30,
|
||||
"y": 414,
|
||||
"fontAsset": "forge-echo-abel-regular",
|
||||
"fontSize": 35,
|
||||
"width": 443,
|
||||
"height": 177,
|
||||
"value": "Automatic wrapping of a longer synthetic test sentence 0001"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"description": "rasterText layout options: default left, centre and right alignment, a threshold either side of the default, an explicit line height with LF, and automatic wrapping.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 600
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"name": "Centre Test 0001"
|
||||
}
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"name": "mono",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Regular.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "normal"
|
||||
},
|
||||
{
|
||||
"name": "forge-echo-abel-regular",
|
||||
"resource": "/fonts/Abel-Regular.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Abel",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "normal"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 59,
|
||||
"y": 59,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 71,
|
||||
"width": 1182,
|
||||
"height": 118,
|
||||
"value": "LEFT TEST 0001"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 59,
|
||||
"y": 207,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 71,
|
||||
"width": 1182,
|
||||
"height": 118,
|
||||
"valuePath": "/record/name",
|
||||
"align": "center"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 59,
|
||||
"y": 355,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 71,
|
||||
"width": 1182,
|
||||
"height": 118,
|
||||
"value": "RIGHT TEST 0001",
|
||||
"align": "right",
|
||||
"threshold": 96
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 59,
|
||||
"y": 502,
|
||||
"fontAsset": "forge-echo-abel-regular",
|
||||
"fontSize": 83,
|
||||
"width": 1182,
|
||||
"height": 296,
|
||||
"value": "LINE ONE\nLINE TWO\nLINE THREE",
|
||||
"lineHeight": 89,
|
||||
"threshold": 200,
|
||||
"align": "left"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 59,
|
||||
"y": 828,
|
||||
"fontAsset": "forge-echo-abel-regular",
|
||||
"fontSize": 71,
|
||||
"width": 887,
|
||||
"height": 355,
|
||||
"value": "Automatic wrapping of a longer synthetic test sentence 0001"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
{
|
||||
"description": "rasterText quarter turns, and the bold and italic faces of one family.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {},
|
||||
"assets": [
|
||||
{
|
||||
"name": "mono",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Regular.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "normal"
|
||||
},
|
||||
{
|
||||
"name": "monoBold",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Bold.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 700,
|
||||
"fontStyle": "normal"
|
||||
},
|
||||
{
|
||||
"name": "headingItalic",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Italic.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 20,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 22,
|
||||
"width": 200,
|
||||
"height": 40,
|
||||
"value": "TURN 0",
|
||||
"rotation": 0
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 240,
|
||||
"y": 20,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 22,
|
||||
"width": 200,
|
||||
"height": 40,
|
||||
"value": "TURN 90",
|
||||
"rotation": 90
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 80,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 22,
|
||||
"width": 200,
|
||||
"height": 40,
|
||||
"value": "TURN 180",
|
||||
"rotation": 180
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 300,
|
||||
"y": 20,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 22,
|
||||
"width": 200,
|
||||
"height": 40,
|
||||
"value": "TURN 270",
|
||||
"rotation": 270
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 240,
|
||||
"fontAsset": "monoBold",
|
||||
"fontSize": 22,
|
||||
"width": 200,
|
||||
"height": 40,
|
||||
"value": "BOLD 0001"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 300,
|
||||
"fontAsset": "headingItalic",
|
||||
"fontSize": 22,
|
||||
"width": 200,
|
||||
"height": 40,
|
||||
"value": "ITALIC 0001"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
{
|
||||
"description": "rasterText quarter turns, and the bold and italic faces of one family.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {},
|
||||
"assets": [
|
||||
{
|
||||
"name": "mono",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Regular.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "normal"
|
||||
},
|
||||
{
|
||||
"name": "monoBold",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Bold.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 700,
|
||||
"fontStyle": "normal"
|
||||
},
|
||||
{
|
||||
"name": "headingItalic",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Italic.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 30,
|
||||
"y": 30,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 33,
|
||||
"width": 296,
|
||||
"height": 59,
|
||||
"value": "TURN 0",
|
||||
"rotation": 0
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 355,
|
||||
"y": 30,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 33,
|
||||
"width": 296,
|
||||
"height": 59,
|
||||
"value": "TURN 90",
|
||||
"rotation": 90
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 30,
|
||||
"y": 118,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 33,
|
||||
"width": 296,
|
||||
"height": 59,
|
||||
"value": "TURN 180",
|
||||
"rotation": 180
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 443,
|
||||
"y": 30,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 33,
|
||||
"width": 296,
|
||||
"height": 59,
|
||||
"value": "TURN 270",
|
||||
"rotation": 270
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 30,
|
||||
"y": 355,
|
||||
"fontAsset": "monoBold",
|
||||
"fontSize": 33,
|
||||
"width": 296,
|
||||
"height": 59,
|
||||
"value": "BOLD 0001"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 30,
|
||||
"y": 443,
|
||||
"fontAsset": "headingItalic",
|
||||
"fontSize": 33,
|
||||
"width": 296,
|
||||
"height": 59,
|
||||
"value": "ITALIC 0001"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
{
|
||||
"description": "rasterText quarter turns, and the bold and italic faces of one family.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 600
|
||||
},
|
||||
"context": {},
|
||||
"assets": [
|
||||
{
|
||||
"name": "mono",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Regular.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "normal"
|
||||
},
|
||||
{
|
||||
"name": "monoBold",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Bold.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 700,
|
||||
"fontStyle": "normal"
|
||||
},
|
||||
{
|
||||
"name": "headingItalic",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Italic.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 59,
|
||||
"y": 59,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 65,
|
||||
"width": 591,
|
||||
"height": 118,
|
||||
"value": "TURN 0",
|
||||
"rotation": 0
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 709,
|
||||
"y": 59,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 65,
|
||||
"width": 591,
|
||||
"height": 118,
|
||||
"value": "TURN 90",
|
||||
"rotation": 90
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 59,
|
||||
"y": 236,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 65,
|
||||
"width": 591,
|
||||
"height": 118,
|
||||
"value": "TURN 180",
|
||||
"rotation": 180
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 887,
|
||||
"y": 59,
|
||||
"fontAsset": "mono",
|
||||
"fontSize": 65,
|
||||
"width": 591,
|
||||
"height": 118,
|
||||
"value": "TURN 270",
|
||||
"rotation": 270
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 59,
|
||||
"y": 709,
|
||||
"fontAsset": "monoBold",
|
||||
"fontSize": 65,
|
||||
"width": 591,
|
||||
"height": 118,
|
||||
"value": "BOLD 0001"
|
||||
},
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 59,
|
||||
"y": 887,
|
||||
"fontAsset": "headingItalic",
|
||||
"fontSize": 65,
|
||||
"width": 591,
|
||||
"height": 118,
|
||||
"value": "ITALIC 0001"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"description": "renderer/BARCODE-FIT.md dynamic scanner-profile example, verbatim.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"barcode": {
|
||||
"type": "qr",
|
||||
"value": "TEST-0001",
|
||||
"label": "QRCODE",
|
||||
"aim": "]Q1"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbologyPath": "/barcode/type",
|
||||
"allowedSymbologies": [
|
||||
"code128",
|
||||
"qr",
|
||||
"ean13"
|
||||
],
|
||||
"valuePath": "/barcode/value",
|
||||
"scannerSymbologyPath": "/barcode/label",
|
||||
"aimIdentifierPath": "/barcode/aim",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 90000,
|
||||
"heightMicrons": 50000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"description": "renderer/BARCODE-FIT.md dynamic scanner-profile example, verbatim.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {
|
||||
"barcode": {
|
||||
"type": "qr",
|
||||
"value": "TEST-0001",
|
||||
"label": "QRCODE",
|
||||
"aim": "]Q1"
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "barcode",
|
||||
"symbologyPath": "/barcode/type",
|
||||
"allowedSymbologies": [
|
||||
"code128",
|
||||
"qr",
|
||||
"ean13"
|
||||
],
|
||||
"valuePath": "/barcode/value",
|
||||
"scannerSymbologyPath": "/barcode/label",
|
||||
"aimIdentifierPath": "/barcode/aim",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"quiet": 10,
|
||||
"fit": {
|
||||
"widthMicrons": 90000,
|
||||
"heightMicrons": 50000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"description": "renderer/README.md rasterText example, verbatim.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"customerName": "Test Customer 0001"
|
||||
}
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"name": "headingItalic",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Italic.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 250,
|
||||
"fontAsset": "headingItalic",
|
||||
"fontSize": 32,
|
||||
"width": 500,
|
||||
"height": 120,
|
||||
"valuePath": "/record/customerName",
|
||||
"align": "left",
|
||||
"rotation": 0,
|
||||
"threshold": 128
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"description": "renderer/README.md rasterText example, verbatim.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"customerName": "Test Customer 0001"
|
||||
}
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"name": "headingItalic",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Italic.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 250,
|
||||
"fontAsset": "headingItalic",
|
||||
"fontSize": 32,
|
||||
"width": 500,
|
||||
"height": 120,
|
||||
"valuePath": "/record/customerName",
|
||||
"align": "left",
|
||||
"rotation": 0,
|
||||
"threshold": 128
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"description": "renderer/README.md rasterText example, verbatim.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 600
|
||||
},
|
||||
"context": {
|
||||
"record": {
|
||||
"customerName": "Test Customer 0001"
|
||||
}
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"name": "headingItalic",
|
||||
"resource": "/fonts/jetbrains-mono/JetBrainsMono-Italic.ttf",
|
||||
"mediaType": "font/ttf",
|
||||
"fontFamily": "Test Mono",
|
||||
"fontWeight": 400,
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "rasterText",
|
||||
"x": 20,
|
||||
"y": 250,
|
||||
"fontAsset": "headingItalic",
|
||||
"fontSize": 32,
|
||||
"width": 500,
|
||||
"height": 120,
|
||||
"valuePath": "/record/customerName",
|
||||
"align": "left",
|
||||
"rotation": 0,
|
||||
"threshold": 128
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"description": "renderer/README.md ZPL authoring example, verbatim.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"order": {
|
||||
"id": "ORD-TEST-0001"
|
||||
}
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"name": "logo",
|
||||
"resource": "/compat-v1/assets/test-mark.png",
|
||||
"mediaType": "image/png"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "text",
|
||||
"x": 20,
|
||||
"y": 20,
|
||||
"width": 12,
|
||||
"height": 24,
|
||||
"valuePath": "/order/id"
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 20,
|
||||
"y": 60,
|
||||
"width": 500,
|
||||
"height": 2,
|
||||
"thickness": 2
|
||||
},
|
||||
{
|
||||
"type": "image",
|
||||
"x": 20,
|
||||
"y": 90,
|
||||
"asset": "logo"
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 20,
|
||||
"y": 150,
|
||||
"symbology": "qr",
|
||||
"scale": 4,
|
||||
"quiet": 4,
|
||||
"value": "SHIPMENT-17"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"description": "renderer/README.md ZPL authoring example, verbatim.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {
|
||||
"order": {
|
||||
"id": "ORD-TEST-0001"
|
||||
}
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"name": "logo",
|
||||
"resource": "/compat-v1/assets/test-mark.png",
|
||||
"mediaType": "image/png"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "text",
|
||||
"x": 20,
|
||||
"y": 20,
|
||||
"width": 12,
|
||||
"height": 24,
|
||||
"valuePath": "/order/id"
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 20,
|
||||
"y": 60,
|
||||
"width": 500,
|
||||
"height": 2,
|
||||
"thickness": 2
|
||||
},
|
||||
{
|
||||
"type": "image",
|
||||
"x": 20,
|
||||
"y": 90,
|
||||
"asset": "logo"
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 20,
|
||||
"y": 150,
|
||||
"symbology": "qr",
|
||||
"scale": 4,
|
||||
"quiet": 4,
|
||||
"value": "SHIPMENT-17"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"description": "renderer/README.md ZPL authoring example, verbatim.",
|
||||
"stock": {
|
||||
"widthMicrons": 101600,
|
||||
"heightMicrons": 152400,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 600
|
||||
},
|
||||
"context": {
|
||||
"order": {
|
||||
"id": "ORD-TEST-0001"
|
||||
}
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"name": "logo",
|
||||
"resource": "/compat-v1/assets/test-mark.png",
|
||||
"mediaType": "image/png"
|
||||
}
|
||||
],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "text",
|
||||
"x": 20,
|
||||
"y": 20,
|
||||
"width": 12,
|
||||
"height": 24,
|
||||
"valuePath": "/order/id"
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"x": 20,
|
||||
"y": 60,
|
||||
"width": 500,
|
||||
"height": 2,
|
||||
"thickness": 2
|
||||
},
|
||||
{
|
||||
"type": "image",
|
||||
"x": 20,
|
||||
"y": 90,
|
||||
"asset": "logo"
|
||||
},
|
||||
{
|
||||
"type": "barcode",
|
||||
"x": 20,
|
||||
"y": 150,
|
||||
"symbology": "qr",
|
||||
"scale": 4,
|
||||
"quiet": 4,
|
||||
"value": "SHIPMENT-17"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"description": "Printer font 0 text: literal and bound values, number and boolean scalars, and UTF-8 with characters that are ZPL command prefixes.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 203
|
||||
},
|
||||
"context": {
|
||||
"order": {
|
||||
"id": "ORD-TEST-0001",
|
||||
"quantity": 12,
|
||||
"shipped": false
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "text",
|
||||
"x": 20,
|
||||
"y": 20,
|
||||
"width": 12,
|
||||
"height": 24,
|
||||
"value": "TEST LABEL 0001"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 20,
|
||||
"y": 60,
|
||||
"width": 10,
|
||||
"height": 20,
|
||||
"valuePath": "/order/id"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 20,
|
||||
"y": 100,
|
||||
"width": 8,
|
||||
"height": 16,
|
||||
"valuePath": "/order/quantity"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 20,
|
||||
"y": 130,
|
||||
"width": 8,
|
||||
"height": 16,
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 20,
|
||||
"y": 160,
|
||||
"width": 8,
|
||||
"height": 16,
|
||||
"value": 3.5
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 20,
|
||||
"y": 190,
|
||||
"width": 14,
|
||||
"height": 28,
|
||||
"value": "Prüfung € ^~_ 0001"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 20,
|
||||
"y": 230,
|
||||
"width": 8,
|
||||
"height": 16,
|
||||
"valuePath": "/order/shipped"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"description": "Printer font 0 text: literal and bound values, number and boolean scalars, and UTF-8 with characters that are ZPL command prefixes.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 300
|
||||
},
|
||||
"context": {
|
||||
"order": {
|
||||
"id": "ORD-TEST-0001",
|
||||
"quantity": 12,
|
||||
"shipped": false
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "text",
|
||||
"x": 30,
|
||||
"y": 30,
|
||||
"width": 18,
|
||||
"height": 35,
|
||||
"value": "TEST LABEL 0001"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 30,
|
||||
"y": 89,
|
||||
"width": 15,
|
||||
"height": 30,
|
||||
"valuePath": "/order/id"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 30,
|
||||
"y": 148,
|
||||
"width": 12,
|
||||
"height": 24,
|
||||
"valuePath": "/order/quantity"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 30,
|
||||
"y": 192,
|
||||
"width": 12,
|
||||
"height": 24,
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 30,
|
||||
"y": 236,
|
||||
"width": 12,
|
||||
"height": 24,
|
||||
"value": 3.5
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 30,
|
||||
"y": 281,
|
||||
"width": 21,
|
||||
"height": 41,
|
||||
"value": "Prüfung € ^~_ 0001"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 30,
|
||||
"y": 340,
|
||||
"width": 12,
|
||||
"height": 24,
|
||||
"valuePath": "/order/shipped"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"description": "Printer font 0 text: literal and bound values, number and boolean scalars, and UTF-8 with characters that are ZPL command prefixes.",
|
||||
"stock": {
|
||||
"widthMicrons": 76200,
|
||||
"heightMicrons": 50800,
|
||||
"topMicrons": 0,
|
||||
"rightMicrons": 0,
|
||||
"bottomMicrons": 0,
|
||||
"leftMicrons": 0,
|
||||
"dpi": 600
|
||||
},
|
||||
"context": {
|
||||
"order": {
|
||||
"id": "ORD-TEST-0001",
|
||||
"quantity": 12,
|
||||
"shipped": false
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"scene": {
|
||||
"schema": "qqq-zpl-scene/1",
|
||||
"elements": [
|
||||
{
|
||||
"type": "text",
|
||||
"x": 59,
|
||||
"y": 59,
|
||||
"width": 35,
|
||||
"height": 71,
|
||||
"value": "TEST LABEL 0001"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 59,
|
||||
"y": 177,
|
||||
"width": 30,
|
||||
"height": 59,
|
||||
"valuePath": "/order/id"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 59,
|
||||
"y": 296,
|
||||
"width": 24,
|
||||
"height": 47,
|
||||
"valuePath": "/order/quantity"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 59,
|
||||
"y": 384,
|
||||
"width": 24,
|
||||
"height": 47,
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 59,
|
||||
"y": 473,
|
||||
"width": 24,
|
||||
"height": 47,
|
||||
"value": 3.5
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 59,
|
||||
"y": 562,
|
||||
"width": 41,
|
||||
"height": 83,
|
||||
"value": "Prüfung € ^~_ 0001"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"x": 59,
|
||||
"y": 680,
|
||||
"width": 24,
|
||||
"height": 47,
|
||||
"valuePath": "/order/shipped"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
^XA^PW609^LL1218^LH0,0^CI28
|
||||
^FO16,16^GFA,1080,1080,18,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800003486E28D1BA3714DCBBDB3336674C75800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO16,144^GFA,1260,1260,21,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO16,272^GFA,1080,1080,18,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000002BDA6C96B34D2E8A4522948CD692BD0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO16,400^GFA,900,900,15,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800002AB8E2E8AE3BA28E8E2A2B8EE800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO16,528^GFA,2280,2280,38,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO16,656^GFA,975,975,15,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A800000280000000000A00000000002800000280000000000A00000000002800000280000000000A00000000002800000280000000000A00000000002800000280000000000A000000000028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO16,784^GFA,715,715,11,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D128000028D1A649AA15C9D12800002800000028000000280000280000002800000028000028000000280000002800002800000028000000280000280000002800000028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO16,912^GFA,975,975,15,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D324DEA362AA112474E53A80000028D000000000A0000000013A80000028D000000000A0000000013A80000028D000000000A0000000013A80000028D000000000A0000000013A80000028D000000000A0000000013A8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO16,1040^GFA,585,585,9,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA800002B326F4EB95EA80000280000000000A80000280000000000A80000280000000000A80000280000000000A80000280000000000A800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,11 @@
|
||||
^XA^PW900^LL1800^LH0,0^CI28
|
||||
^FO24,24^GFA,4320,4320,36,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000Line truncated
|
||||
^FO24,213^GFA,4920,4920,41,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF3330F3CCCC3CF33CC333CC33CF300000000000C33CF3333CF0CF33C3333CCF0CCCF3C330F33CCCC3CF333Line truncated
|
||||
^FO24,402^GFA,4200,4200,35,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000000CCFF3CC3CF0C33CCF0F30F30CFCC0CC30330C0CC330C0F0F33CC30CCFF300000000Line truncated
|
||||
^FO24,591^GFA,3600,3600,30,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCFCC0000000000CCCCFC0FC0CFCC0CCFC0FCFCC0CC0FCC0FC0CCC0CCFC0FCLine truncated
|
||||
^FO24,780^GFA,9000,9000,75,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3Line truncated
|
||||
^FO24,969^GFA,3770,3770,29,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303FLine truncated
|
||||
^FO24,1158^GFA,2860,2860,22,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC0F303CC3C30C3CCCC0333F0C3F3030CC0000000000CC00000000000000CC00000000000000CC0000000000CC00000000000000CC00000000000000CC0000000000CC00000000000000CC00000000000000CC0000000000CC00000000000000CC00000000000000CC0000000000CC00000000000000CC00000000000000CC0000000000CC00000000000000CC00000000000000CC0000000000CC00000000000000CC00000000000000CC0000000000CC00000000000000CC00000000000000CC0000000000CC00000000000000CC00000000000000CC0000000000CC00000000000000CC00000000000000CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO24,1347^GFA,3770,3770,29,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303Line truncated
|
||||
^FO24,1536^GFA,2340,2340,18,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CCF0F0C3CFF30FCCFC333FCCCC0000000000CC000000000000000000000CCC0000000000CC000000000000000000000CCC0000000000CC000000000000000000000CCC0000000000CC000000000000000000000CCC0000000000CC000000000000000000000CCC0000000000CC000000000000000000000CCC0000000000CC000000000000000000000CCC0000000000CC000000000000000000000CCC0000000000CC000000000000000000000CCC0000000000CC000000000000000000000CCC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,11 @@
|
||||
^XA^PW1800^LL3600^LH0,0^CI28
|
||||
^FO48,48^GFA,17280,17280,72,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO48,426^GFA,19440,19440,81,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO48,804^GFA,16560,16560,69,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO48,1182^GFA,14400,14400,60,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0F0F0F0FFF000FFF000F0FFF0F000F0F0FFF000FFF0FFF0F000F0F000FFF0F000FFF000F0F0F000F0F0FFF000FFF0FFF0F000000000000000000000F0F0F0F0FFF000FFF000F0FFF0F000F0F0FFF00Line truncated
|
||||
^FO48,1560^GFA,35760,35760,149,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO48,1938^GFA,15080,15080,58,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0F000FF0F00FF00F00F00FF0FFFF0F0F000FF0FF000F0F0F0F0F0000F000F00F00F000FFF0F00FFF00F0F00FFF0F0F000000000000000000000F0F000FF0F00FF00F00F00FF0FFFF0F0F000FF0FF000F0F0F0F0F0000F000F00F00F000FFF0F00FFF00F0F00FFF0F0F000000000000000000000F0F000FF0F00FF00F00F00FF0FFFF0F0F000FF0FF000F0F0F0F0F0000F000F00F00F000FFF0F00FFF00F0F0Line truncated
|
||||
^FO48,2316^GFA,11440,11440,44,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FF0F0F0F0000F0F0FFF00F00FFF0F000F00F0F000000000000000000000F0F000FF0F000FF0F00FF00F00F00FFLine truncated
|
||||
^FO48,2694^GFA,15080,15080,58,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0F000FF0F00FF00F00F00FF0FFFF0F0F000FF0FF000F0F0F0F0F0000F000F00F00F000FFF0F00FFF00F0F00FFF0F0F000000000000000000000F0F000FF0F00FF00F00F00FF0FFFF0F0F000FF0FF000F0F0F0F0F0000F000F00F00F000FFF0F00FFF00F0F00FFF0F0F000000000000000000000F0F000FF0F00FF00F00F00FF0FFFF0F0F000FF0FF000F0F0F0F0F0000F000F00F00F000FFF0F00FFF00F0F0Line truncated
|
||||
^FO48,3072^GFA,9360,9360,36,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F000000000000000000000F0F0FF00FF00F00FF0FFFF0F00FFF0F0FFF00F0F0FFFF0F0F0F00000000000000Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,6 @@
|
||||
^XA^PW609^LL1218^LH0,0^CI28
|
||||
^FO16,16^GFA,1740,1740,15,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFF0F0F000FFFFFFF000000000FFFFFFF0F0F000FFFFFFF000000000FFFFFFF0F0F000FFFFFFF000000000FFFFFFF0F0F000FFFFFFF000000000F00000F00F0FF0F00000F000000000F00000F00F0FF0F00000F000000000F00000F00F0FF0F00000F000000000F00000F00F0FF0F00000F000000000F0FFF0F00F00F0F0FFF0F000000000F0FFF0F00F00F0F0FFF0F000000000F0FFF0F00F00F0F0FFF0F000000000F0FFF0F00F00F0F0FFF0F000000000F0FFF0F0F000F0F0FFF0F000000000F0FFF0F0F000F0F0FFF0F000000000F0FFF0F0F000F0F0FFF0F000000000F0FFF0F0F000F0F0FFF0F000000000F0FFF0F00F0F00F0FFF0F000000000F0FFF0F00F0F00F0FFF0F000000000F0FFF0F00F0F00F0FFF0F000000000F0FFF0F00F0F00F0FFF0F000000000F00000F000FF00F00000F000000000F00000F000FF00F00000F000000000F00000F000FF00F00000F000000000F00000F000FF00F00000F000000000FFFFFFF0F0F0F0FFFFFFF000000000FFFFFFF0F0F0F0FFFFFFF000000000FFFFFFF0F0F0F0FFFFFFF000000000FFFFFFF0F0F0F0FFFFFFF000000000000000000FF0F00000000000000000000000000FF0F00000000000000000000000000FF0F00000000000000000000000000FF0F0000000000000000000F0FFF0F0F0FF000F00F00000000000F0FFF0F0F0FF000F00F00000000000F0FFF0F0F0FF000F00F00000000000F0FFF0F0F0FF000F00F0000000000F0FF000F00F0FFF0FF0F0000000000F0FF000F00F0FFF0FF0F0000000000F0FF000F00F0FFF0FF0F0000000000F0FF000F00F0FFF0FF0F0000000000F00FFF0F00F0000F00FF0000000000F00FFF0F00F0000F00FF0000000000F00FFF0F00F0000F00FF0000000000F00FFF0F00F0000F00FF000000000F00F0000FFFFFFFF0F0FF000000000F00F0000FFFFFFFF0F0FF000000000F00F0000FFFFFFFF0F0FF000000000F00F0000FFFFFFFF0F0FF000000000FFFFF0FFFF0F00F0FFF0F000000000FFFFF0FFFF0F00F0FFF0F000000000FFFFF0FFFF0F00F0FFF0F000000000FFFFF0FFFF0F00F0FFF0F00000000000000000FF000F0FFF00000000000000000000FF000F0FFF00000000000000000000FF000F0FFF00000000000000000000FF000F0FFF000000000000FFFFFFF00F00FFF0FF0F0000000000FFFFFFF00F00FFF0FF0F0000000000FFFFFFF00F00FFF0FF0F0000000000FFFFFFF00F00FFF0FF0F0000000000F00000F0FF0F000F00FF0000000000F00000F0FF0F000F00FF0000000000F00000F0FF0F000F00FF0000000000F00000F0FF0F000F00FF0000000000F0FFF0F0F0F0FFF0F0FFF000000000F0FFF0F0F0F0FFF0F0FFF000000000F0FFF0F0F0F0FFF0F0FFF000000000F0FFF0F0F0F0FFF0F0FFF000000000F0FFF0F00FF000FF00FF0000000000F0FFF0F00FF000FF00FF0000000000F0FFF0F00FF000FF00FF0000000000F0FFF0F00FF000FF00FF0000000000F0FFF0F0F0F0FF00FFF0F000000000F0FFF0F0F0F0FF00FFF0F000000000F0FFF0F0F0F0FF00FFF0F000000000F0FFF0F0F0F0FF00FFF0F000000000F00000F000F00FFF000FF000000000F00000F000F00FFF000FF000000000F00000F000F00FFF000FF000000000F00000F000F00FFF000FF000000000FFFFFFF00FFFFF00F0F0F000000000FFFFFFF00FFFFF00F0F0F000000000FFFFFFF00FFFFF00F0F0F000000000FFFFFFF00FFFFF00F0F0F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO16,160^GFA,1540,1540,14,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F83E0F83E0F83E0F800000000000F83E0F83E0F83E0F800000000000F83E0F83E0F83E0F800000000000F83E0F83E0F83E0F800000000000F83E0F83E0F83E0F800000000000F83FF0001F0000007C0000000000F83FF0001F0000007C0000000000F83FF0001F0000007C0000000000F83FF0001F0000007C0000000000F83FF0001F0000007C0000000000F8000003E0FFFE00000000000000F8000003E0FFFE00000000000000F8000003E0FFFE00000000000000F8000003E0FFFE00000000000000F8000003E0FFFE00000000000000FFFE0F83E0003FF07C0000000000FFFE0F83E0003FF07C0000000000FFFE0F83E0003FF07C0000000000FFFE0F83E0003FF07C0000000000FFFE0F83E0003FF07C0000000000F83E0FFC000001FF800000000000F83E0FFC000001FF800000000000F83E0FFC000001FF800000000000F83E0FFC000001FF800000000000F83E0FFC000001FF800000000000FFC0007C00FFC0007C0000000000FFC0007C00FFC0007C0000000000FFC0007C00FFC0007C0000000000FFC0007C00FFC0007C0000000000FFC0007C00FFC0007C0000000000F801F003FF000000000000000000F801F003FF000000000000000000F801F003FF000000000000000000F801F003FF000000000000000000F801F003FF000000000000000000F801FF83E0FFC00FFC0000000000F801FF83E0FFC00FFC0000000000F801FF83E0FFC00FFC0000000000F801FF83E0FFC00FFC0000000000F801FF83E0FFC00FFC0000000000FFFFFFFC1F07FE0F800000000000FFFFFFFC1F07FE0F800000000000FFFFFFFC1F07FE0F800000000000FFFFFFFC1F07FE0F800000000000FFFFFFFC1F07FE0F800000000000F83FFFFFFF07FFF07C0000000000F83FFFFFFF07FFF07C0000000000F83FFFFFFF07FFF07C0000000000F83FFFFFFF07FFF07C0000000000F83FFFFFFF07FFF07C0000000000FFC1F07C1FF8000F800000000000FFC1F07C1FF8000F800000000000FFC1F07C1FF8000F800000000000FFC1F07C1FF8000F800000000000FFC1F07C1FF8000F800000000000FFFFFFFC00FFC0007C0000000000FFFFFFFC00FFC0007C0000000000FFFFFFFC00FFC0007C0000000000FFFFFFFC00FFC0007C0000000000FFFFFFFC00FFC0007C0000000000FFC0007FE0F801F0000000000000FFC0007FE0F801F0000000000000FFC0007FE0F801F0000000000000FFC0007FE0F801F0000000000000FFC0007FE0F801F0000000000000FFFFFFFFFFFFFFFFFC0000000000FFFFFFFFFFFFFFFFFC0000000000FFFFFFFFFFFFFFFFFC0000000000FFFFFFFFFFFFFFFFFC0000000000FFFFFFFFFFFFFFFFFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO16,304^GFA,1725,1725,15,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E007FFF003E0000000000000000003E007FFF003E0000000000000000003E007FFF003E0000000000000000003E007FFF003E0000000000000000003E007FFF003E0000000000000000F83E007FFFFFFE0FFC000000000000F83E007FFFFFFE0FFC000000000000F83E007FFFFFFE0FFC000000000000F83E007FFFFFFE0FFC000000000000F83E007FFFFFFE0FFC000000000000F83FF00000F8000FFC000000000000F83FF00000F8000FFC000000000000F83FF00000F8000FFC000000000000F83FF00000F8000FFC000000000000F83FF00000F8000FFC000000000000F83FFFFFFFFFFFFFFFE00000000000F83FFFFFFFFFFFFFFFE00000000000F83FFFFFFFFFFFFFFFE00000000000F83FFFFFFFFFFFFFFFE00000000000F83FFFFFFFFFFFFFFFE0000000000007C1F000000001F003E0000000000007C1F000000001F003E0000000000007C1F000000001F003E0000000000007C1F000000001F003E0000000000007C1F000000001F003E00000000000F801F07FFFFFC1F07C000000000000F801F07FFFFFC1F07C000000000000F801F07FFFFFC1F07C000000000000F801F07FFFFFC1F07C000000000000F801F07FFFFFC1F07C000000000000F801F07C0007C1FF83E00000000000F801F07C0007C1FF83E00000000000F801F07C0007C1FF83E00000000000F801F07C0007C1FF83E00000000000F801F07C0007C1FF83E00000000000F83FF07C1F07C1FFFFE00000000000F83FF07C1F07C1FFFFE00000000000F83FF07C1F07C1FFFFE00000000000F83FF07C1F07C1FFFFE00000000000F83FF07C1F07C1FFFFE0000000000007FFF07C0007C1FF8000000000000007FFF07C0007C1FF8000000000000007FFF07C0007C1FF8000000000000007FFF07C0007C1FF8000000000000007FFF07C0007C1FF8000000000000007FFF07FFFFFC1F003E0000000000007FFF07FFFFFC1F003E0000000000007FFF07FFFFFC1F003E0000000000007FFF07FFFFFC1F003E0000000000007FFF07FFFFFC1F003E0000000000007C1F000000001FFFFE0000000000007C1F000000001FFFFE0000000000007C1F000000001FFFFE0000000000007C1F000000001FFFFE0000000000007C1F000000001FFFFE000000000000001FFFFFFFFFFFF800000000000000001FFFFFFFFFFFF800000000000000001FFFFFFFFFFFF800000000000000001FFFFFFFFFFFF800000000000000001FFFFFFFFFFFF800000000000000000007C1F003E00000000000000000000007C1F003E00000000000000000000007C1F003E00000000000000000000007C1F003E00000000000000000000007C1F003E0000000000000000F801FF83E0F83E0FFFE00000000000F801FF83E0F83E0FFFE00000000000F801FF83E0F83E0FFFE00000000000F801FF83E0F83E0FFFE00000000000F801FF83E0F83E0FFFE00000000000003FFF80000000007FE00000000000003FFF80000000007FE00000000000003FFF80000000007FE00000000000003FFF80000000007FE00000000000003FFF80000000007FE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO16,448^GFA,1624,1624,28,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF33303FF333FF0F3303C003CFC0FC3CFF333FC03FFF30330C0000FFFF33303FF333FF0F3303C003CFC0FC3CFF333FC03FFF30330C0000FFFF33303FF333FF0F3303C003CFC0FC3CFF333FC03FFF30330C0000FFFF33303FF333FF0F3303C003CFC0FC3CFF333FC03FFF30330C0000FFFF33303FF333FF0F3303C003CFC0FC3CFF333FC03FFF30330C0000FFFF33303FF333FF0F3303C003CFC0FC3CFF333FC03FFF30330C0000FFFF33303FF3303C0C3C33FFC30FF303FCFF330C003FFF30330C0000FFFF33303FF3303C0C3C33FFC30FF303FCFF330C003FFF30330C0000FFFF33303FF3303C0C3C33FFC30FF303FCFF330C003FFF30330C0000FFFF33303FF3303C0C3C33FFC30FF303FCFF330C003FFF30330C0000FFFF33303FF3303C0C3C33FFC30FF303FCFF330C003FFF30330C0000FFFF33303FF3303C0C3C33FFC30FF303FCFF330C003FFF30330C0000FFFF33303F333FFC0F333FF003F333FFC0F3303FF03FFF30330C0000FFFF33303F333FFC0F333FF003F333FFC0F3303FF03FFF30330C0000FFFF33303F333FFC0F333FF003F333FFC0F3303FF03FFF30330C0000FFFF33303F333FFC0F333FF003F333FFC0F3303FF03FFF30330C0000FFFF33303F333FFC0F333FF003F333FFC0F3303FF03FFF30330C0000FFFF33303F333FFC0F333FF003F333FFC0F3303FF03FFF30330C0000FFFF33303CCFF0FFCF30F0FC030F00F300CCFF0FF03FFF30330C0000FFFF33303CCFF0FFCF30F0FC030F00F300CCFF0FF03FFF30330C0000FFFF33303CCFF0FFCF30F0FC030F00F300CCFF0FF03FFF30330C0000FFFF33303CCFF0FFCF30F0FC030F00F300CCFF0FF03FFF30330C0000FFFF33303CCFF0FFCF30F0FC030F00F300CCFF0FF03FFF30330C0000FFFF33303CCFF0FFCF30F0FC030F00F300CCFF0FF03FFF30330C0000FFFF33303CCFC0300FFC03C333FC30F0F0FF33F0FC3FFF30330C0000FFFF33303CCFC0300FFC03C333FC30F0F0FF33F0FC3FFF30330C0000FFFF33303CCFC0300FFC03C333FC30F0F0FF33F0FC3FFF30330C0000FFFF33303CCFC0300FFC03C333FC30F0F0FF33F0FC3FFF30330C0000FFFF33303CCFC0300FFC03C333FC30F0F0FF33F0FC3FFF30330C0000FFFF33303CCFC0300FFC03C333FC30F0F0FF33F0FC3FFF30330C0000FFFF33303FCCFF300CFC00C0F300FCF0FCFF33FC033FFF30330C0000FFFF33303FCCFF300CFC00C0F300FCF0FCFF33FC033FFF30330C0000FFFF33303FCCFF300CFC00C0F300FCF0FCFF33FC033FFF30330C0000FFFF33303FCCFF300CFC00C0F300FCF0FCFF33FC033FFF30330C0000FFFF33303FCCFF300CFC00C0F300FCF0FCFF33FC033FFF30330C0000FFFF33303FCCFF300CFC00C0F300FCF0FCFF33FC033FFF30330C0000FFFF33303F30FCFFCF00F03303C3CF3C00F30FCFF03FFF30330C0000FFFF33303F30FCFFCF00F03303C3CF3C00F30FCFF03FFF30330C0000FFFF33303F30FCFFCF00F03303C3CF3C00F30FCFF03FFF30330C0000FFFF33303F30FCFFCF00F03303C3CF3C00F30FCFF03FFF30330C0000FFFF33303F30FCFFCF00F03303C3CF3C00F30FCFF03FFF30330C0000FFFF33303F30FCFFCF00F03303C3CF3C00F30FCFF03FFF30330C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,6 @@
|
||||
^XA^PW900^LL1800^LH0,0^CI28
|
||||
^FO24,24^GFA,3828,3828,22,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFC0FC0FC0000FFFFFFFFFFC000000000000FFFFFFFFFFC0FC0FC0000FFFFFFFFFFC000000000000FFFFFFFFFFC0FC0FC0000FFFFFFFFFFC000000000000FFFFFFFFFFC0FC0FC0000FFFFFFFFFFC000000000000FFFFFFFFFFC0FC0FC0000FFFFFFFFFFC000000000000FFFFFFFFFFC0FC0FC0000FFFFFFFFFFC000000000000FC0000000FC003F03FFC0FC0000000FC000000000000FC0000000FC003F03FFC0FC0000000FC000000000000FC0000000FC003F03FFC0FC0000000FC000000000000FC0000000FC003F03FFC0FC0000000FC000000000000FC0000000FC003F03FFC0FC0000000FC000000000000FC0000000FC003F03FFC0FC0000000FC000000000000FC0FFFFC0FC003F000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC003F000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC003F000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC003F000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC003F000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC003F000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC0FC0000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC0FC0000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC0FC0000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC0FC0000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC0FC0000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC0FC0000FC0FC0FFFFC0FC000000000000FC0FFFFC0FC003F03F000FC0FFFFC0FC000000000000FC0FFFFC0FC003F03F000FC0FFFFC0FC000000000000FC0FFFFC0FC003F03F000FC0FFFFC0FC000000000000FC0FFFFC0FC003F03F000FC0FFFFC0FC000000000000FC0FFFFC0FC003F03F000FC0FFFFC0FC000000000000FC0FFFFC0FC003F03F000FC0FFFFC0FC000000000000FC0000000FC0000FFF000FC0000000FC000000000000FC0000000FC0000FFF000FC0000000FC000000000000FC0000000FC0000FFF000FC0000000FC000000000000FC0000000FC0000FFF000FC0000000FC000000000000FC0000000FC0000FFF000FC0000000FC000000000000FC0000000FC0000FFF000FC0000000FC000000000000FFFFFFFFFFC0FC0FC0FC0FFFFFFFFFFC000000000000FFFFFFFFFFC0FC0FC0FC0FFFFFFFFFFC000000000000FFFFFFFFFFC0FC0FC0FC0FFFFFFFFFFC000000000000FFFFFFFFFFC0FC0FC0FC0FFFFFFFFFFC000000000000FFFFFFFFFFC0FC0FC0FC0FFFFFFFFFFC000000000000FFFFFFFFFFC0FC0FC0FC0FFFFFFFFFFC00000000000000000000000003FFC0FC00000000000000000000000000000000000003FFC0FC00000000000000000000000000000000000003FFC0FC00000000000000000000000000000000000003FFC0FC00000000000000000000000000000000000003FFC0FC00000000000000000000000000000000000003FFC0FC000000000000000000000000000FC0FFFFC0FC0FC0FFF00003F000FC000000000000000FC0FFFFC0FC0FC0FFF00003F000FC000000000000000FC0FFFFC0FC0FC0FFF00003F000FC000000000000000FC0FFFFC0FC0FC0FFF00003F000FC000000000000000FC0FFFFC0FC0FC0FFF00003F000FC000000000000000FC0FFFFC0FC0FC0FFF00003F000FC00000000000003F03FFC0000FC003F03FFFF03FFC0FC00000000000003F03FFC0000FC003F03FFFF03FFC0FC00000000000003F03FFC0000FC003F03FFFF03FFC0FC00000000000003F03FFC0000FC003F03FFFF03FFC0FC00000000000003F03FFC0000FC003F03FFFF03FFC0FC00000000000003F03FFC0000FC003F03FFFF03FFC0FC00000000000003F000FFFFC0FC003F000000FC003FFC00000000000003F000FFFFC0FC003F000000FC003FFC00000000000003F000FFFFC0FC003F000000FC003FFC00000000000003F000FFFFC0FC003F000000FC003FFC00000000000003F000FFFFC0FC003F000000FC003FFC00000000000003F000FFFFC0FC003F000000FC003FFC000000000000FC003F000000FFFFFFFFFFFF03F03FFC000000000000FC003F000000FFFFFFFFFFFF03F03FFC000000000000FC003F000000FFFFFFFFFFFF03F03FFC000000000000FC003F000000FFFFFFFFFFFF03F03FFC000000000000FC003F000000FFFFFFFFFFFF03F03FFC000000000000FC003F000000FFFFFFFFFFFF03F03FFC000000000000FFFFFFFC0FFFFFF03F000FC0FFFFC0FC000000000000FFFFFFFC0FFFFFF03F000FC0FFFFC0FC000000000000FFFFFFFC0FFFFFF03F000FC0FFFFC0FC000000000000FFFFFFFC0FFFFFF03F000FC0FFFFC0FC000000000000FFFFFFFC0FFFFFF03F000FC0FFFFC0FC000000000000FFFFFFFC0FFFFFF03F000FC0FFFFC0FC000000000000000000000000FFF00003F03FFFF00000000000000000000000000000FFF00003F03FFFF00000000000000000000000000000FFF00003F03FFFF00000000000000000000000000000FFF00003F03FFFF00000000000000000000000000000FFF00003F03FFFF00000000000000000000000000000FFF00003F03FFFF00000000000000000FFFFFFFFFFC003F000FFFFC0FFF03F00000000000000FFFFFFFFFFC003F000FFFFC0FFF03F00000000000000FFFFFFFFFFC003F000FFFFC0FFF03F00000000000000FFFFFFFFFFC003F000FFFFC0FFF03F00000000000000FFFFFFFFFFC003F000FFFFC0FFF03F000000000Line truncated
|
||||
^FO24,237^GFA,3872,3872,22,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FFFF000000FF0000000000FF0000000000000000FF00FFFF000000FF0000000000FF0000000000000000FF00FFFF000000FF0000000000FF0000000000000000FF00FFFF000000FF0000000000FF0000000000000000FF00FFFF000000FF0000000000FF0000000000000000FF00FFFF000000FF0000000000FF0000000000000000FF00FFFF000000FF0000000000FF0000000000000000FF00FFFF000000FF0000000000FF0000000000000000FF0000000000FF00FFFFFF0000000000000000000000FF0000000000FF00FFFFFF0000000000000000000000FF0000000000FF00FFFFFF0000000000000000000000FF0000000000FF00FFFFFF0000000000000000000000FF0000000000FF00FFFFFF0000000000000000000000FF0000000000FF00FFFFFF0000000000000000000000FF0000000000FF00FFFFFF0000000000000000000000FF0000000000FF00FFFFFF0000000000000000000000FFFFFF00FF00FF000000FFFF00FF0000000000000000FFFFFF00FF00FF000000FFFF00FF0000000000000000FFFFFF00FF00FF000000FFFF00FF0000000000000000FFFFFF00FF00FF000000FFFF00FF0000000000000000FFFFFF00FF00FF000000FFFF00FF0000000000000000FFFFFF00FF00FF000000FFFF00FF0000000000000000FFFFFF00FF00FF000000FFFF00FF0000000000000000FFFFFF00FF00FF000000FFFF00FF0000000000000000FF00FF00FFFF0000000000FFFF000000000000000000FF00FF00FFFF0000000000FFFF000000000000000000FF00FF00FFFF0000000000FFFF000000000000000000FF00FF00FFFF0000000000FFFF000000000000000000FF00FF00FFFF0000000000FFFF000000000000000000FF00FF00FFFF0000000000FFFF000000000000000000FF00FF00FFFF0000000000FFFF000000000000000000FF00FF00FFFF0000000000FFFF000000000000000000FFFF000000FF0000FFFF000000FF0000000000000000FFFF000000FF0000FFFF000000FF0000000000000000FFFF000000FF0000FFFF000000FF0000000000000000FFFF000000FF0000FFFF000000FF0000000000000000FFFF000000FF0000FFFF000000FF0000000000000000FFFF000000FF0000FFFF000000FF0000000000000000FFFF000000FF0000FFFF000000FF0000000000000000FFFF000000FF0000FFFF000000FF0000000000000000FF0000FF0000FFFF0000000000000000000000000000FF0000FF0000FFFF0000000000000000000000000000FF0000FF0000FFFF0000000000000000000000000000FF0000FF0000FFFF0000000000000000000000000000FF0000FF0000FFFF0000000000000000000000000000FF0000FF0000FFFF0000000000000000000000000000FF0000FF0000FFFF0000000000000000000000000000FF0000FF0000FFFF0000000000000000000000000000FF0000FFFF00FF00FFFF0000FFFF0000000000000000FF0000FFFF00FF00FFFF0000FFFF0000000000000000FF0000FFFF00FF00FFFF0000FFFF0000000000000000FF0000FFFF00FF00FFFF0000FFFF0000000000000000FF0000FFFF00FF00FFFF0000FFFF0000000000000000FF0000FFFF00FF00FFFF0000FFFF0000000000000000FF0000FFFF00FF00FFFF0000FFFF0000000000000000FF0000FFFF00FF00FFFF0000FFFF0000000000000000FFFFFFFFFFFF00FF00FFFF00FF000000000000000000FFFFFFFFFFFF00FF00FFFF00FF000000000000000000FFFFFFFFFFFF00FF00FFFF00FF000000000000000000FFFFFFFFFFFF00FF00FFFF00FF000000000000000000FFFFFFFFFFFF00FF00FFFF00FF000000000000000000FFFFFFFFFFFF00FF00FFFF00FF000000000000000000FFFFFFFFFFFF00FF00FFFF00FF000000000000000000FFFFFFFFFFFF00FF00FFFF00FF000000000000000000FF00FFFFFFFFFFFF00FFFFFF00FF0000000000000000FF00FFFFFFFFFFFF00FFFFFF00FF0000000000000000FF00FFFFFFFFFFFF00FFFFFF00FF0000000000000000FF00FFFFFFFFFFFF00FFFFFF00FF0000000000000000FF00FFFFFFFFFFFF00FFFFFF00FF0000000000000000FF00FFFFFFFFFFFF00FFFFFF00FF0000000000000000FF00FFFFFFFFFFFF00FFFFFF00FF0000000000000000FF00FFFFFFFFFFFF00FFFFFF00FF0000000000000000FFFF00FF00FF00FFFF000000FF0000000000Line truncated
|
||||
^FO24,450^GFA,3381,3381,21,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F8001FFFFF0003F800000000000000000000000003F8001FFFFF0003F800000000000000000000000003F8001FFFFF0003F800000000000000000000000003F8001FFFFF0003F800000000000000000000000003F8001FFFFF0003F800000000000000000000000003F8001FFFFF0003F800000000000000000000000003F8001FFFFF0003F80000000000000000000000FE03F8001FFFFFFFFFF80FFFC00000000000000000FE03F8001FFFFFFFFFF80FFFC00000000000000000FE03F8001FFFFFFFFFF80FFFC00000000000000000FE03F8001FFFFFFFFFF80FFFC00000000000000000FE03F8001FFFFFFFFFF80FFFC00000000000000000FE03F8001FFFFFFFFFF80FFFC00000000000000000FE03F8001FFFFFFFFFF80FFFC00000000000000000FE03FFF0000000FE00000FFFC00000000000000000FE03FFF0000000FE00000FFFC00000000000000000FE03FFF0000000FE00000FFFC00000000000000000FE03FFF0000000FE00000FFFC00000000000000000FE03FFF0000000FE00000FFFC00000000000000000FE03FFF0000000FE00000FFFC00000000000000000FE03FFF0000000FE00000FFFC00000000000000000FE03FFFFFFFFFFFFFFFFFFFFFF8000000000000000FE03FFFFFFFFFFFFFFFFFFFFFF8000000000000000FE03FFFFFFFFFFFFFFFFFFFFFF8000000000000000FE03FFFFFFFFFFFFFFFFFFFFFF8000000000000000FE03FFFFFFFFFFFFFFFFFFFFFF8000000000000000FE03FFFFFFFFFFFFFFFFFFFFFF8000000000000000FE03FFFFFFFFFFFFFFFFFFFFFF800000000000000001FC07F0000000000007F0003F800000000000000001FC07F0000000000007F0003F800000000000000001FC07F0000000000007F0003F800000000000000001FC07F0000000000007F0003F800000000000000001FC07F0000000000007F0003F800000000000000001FC07F0000000000007F0003F800000000000000001FC07F0000000000007F0003F8000000000000000FE0007F01FFFFFFFFC07F01FC00000000000000000FE0007F01FFFFFFFFC07F01FC00000000000000000FE0007F01FFFFFFFFC07F01FC00000000000000000FE0007F01FFFFFFFFC07F01FC00000000000000000FE0007F01FFFFFFFFC07F01FC00000000000000000FE0007F01FFFFFFFFC07F01FC00000000000000000FE0007F01FFFFFFFFC07F01FC00000000000000000FE0007F01FC00001FC07FFE03F8000000000000000FE0007F01FC00001FC07FFE03F8000000000000000FE0007F01FC00001FC07FFE03F8000000000000000FE0007F01FC00001FC07FFE03F8000000000000000FE0007F01FC00001FC07FFE03F8000000000000000FE0007F01FC00001FC07FFE03F8000000000000000FE0007F01FC00001FC07FFE03F8000000000000000FE03FFF01FC07F01FC07FFFFFF8000000000000000FE03FFF01FC07F01FC07FFFFFF8000000000000000FE03FFF01FC07F01FC07FFFFFF8000000000000000FE03FFF01FC07F01FC07FFFFFF8000000000000000FE03FFF01FC07F01FC07FFFFFF8000000000000000FE03FFF01FC07F01FC07FFFFFF8000000000000000FE03FFF01FC07F01FC07FFFFFF800000000000000001FFFFF01FC00001FC07FFE000000000000000000001FFFFF01FC00001FC07FFE000000000000000000001FFFFF01FC00001FC07FFE000000000000000000001FFFFF01FC00001FC07FFE000000000000000000001FFFFF01FC00001FC07FFE000000000000000000001FFFFF01FC00001FC07FFE000000000000000000001FFFFF01FC00001FC07FFE000000000000000000001FFFFF01FFFFFFFFC07F0003F800000000000000001FFFFF01FFFFFFFFC07F0003F800000000000000001FFFFF01FFFFFFFFC07F0003F800000000000000001FFFFF01FFFFFFFFC07F0003F800000000000000001FFFFF01FFFFFFFFC07F0003F800000000000000001FFFFF01FFFFFFFFC07F0003F800000000000000001FFFFF01FFFFFFFFC07F0003F800000000000000001FC07F0000000000007FFFFFF800000000000000001FC07F0000000000007FFFFFF800000000000000001FC07F0000000000007FFFFFF800000000000000001FC07F0000000000007FFFFFF800000000000000001FC07F0000000000007FFFFFF800000000000000001FC07F0000000000007FFFFFF800000000000000001FC07F0000000000007FFFFFF8000000000000000000007FFFFFFFFFFFFFFFFE0000000000000000000000007FFFFFFFFFFFFFFFFE0000000000000000000000007FFFFFFFFFFFFFFFFE0000000000000000000000007FFFFFFFFFFFFFFFFE0000000000000000000000007FFFFFFFFFFFFFFFFE0000000000000000000000007FFFFFFFFFFFFFFFFE0000000000000000000000007FFFFFFFFFFFFFFFFE0000000000000000000000000001FC07F0003F80000000000000000000000000000001FC07F0003F80000000000000000000000000000001FC07F0003F80000000000000000000000000000001FC07F0003F80000000000000000000000000000001FC07F0003F80000000000000000000000000000001FC07F0003F80000000000000000000000000000001Line truncated
|
||||
^FO24,663^GFA,6496,6496,56,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F0FFFFF00FF0F0F000FF000000FF0FFF000FFF00FF0FFFF0F0F0FFFF0000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFFFF0F0F000FF000F00FF00F0FFFFFF00F00FFFF0F000FFFF0FFFF0F0F00F000000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFF0F0F0FFFFFF000FF0F0F0FFFFF00000FFF0F0F0FFFFFF000FF0F0F000FFFFF000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFF0F0F0FFFFFF000FF0F0F0FFFFF00000FFF0F0F0FFFFFF000FF0F0F000FFFFF000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFF0F0F0FFFFFF000FF0F0F0FFFFF00000FFF0F0F0FFFFFF000FF0F0F000FFFFF000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFF0F0F0FFFFFF000FF0F0F0FFFFF00000FFF0F0F0FFFFFF000FF0F0F000FFFFF000FFFFFFF0F000F0F00F000000000FFFFFFFF0F0F0F000FFF0F0F0FFFFFF000FF0F0FLine truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,6 @@
|
||||
^XA^PW1800^LL3600^LH0,0^CI28
|
||||
^FO48,48^GFA,15312,15312,44,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFF000FFF000FFF000000000FFFFFFFFFFFFFFFFFFFFF0000000000000000000000000FFFFFFFFFFFFFFFFFFFFF000FFF000FFF000000000FFFFFFFFFFFFFFFFFFFFF0000000000000000000000000FFFFFFFFFFFFFFFFFFFFF000FFF000FFF000000000FFFFFFFFFFFFFFFFFFFFF0000000000000000000000000FFFFFFFFFFFFFFFFFFFFF000FFF000FFF000000000FFFFFFFFFFFFFFFFFFFFF0000000000000000000000000FFFFFFFFFFFFFFFFFFFFF000FFF000FFF000000000FFFFFFFFFFFFFFFFFFFFF0000000000000000000000000FFFFFFFFFFFFFFFFFFFFF000FFF000FFF000000000FFFFFFFFFFFFFFFFFFFFF0000000000000000000000000FFFFFFFFFFFFFFFFFFFFF000FFF000FFF000000000FFFFFFFFFFFFFFFFFFFFF0000000000000000000000000FFFFFFFFFFFFFFFFFFFFF000FFF000FFF000000000FFFFFFFFFFFFFFFFFFFFF0000000000000000000000000FFFFFFFFFFFFFFFFFFFFF000FFF000FLine truncated
|
||||
^FO48,474^GFA,15488,15488,44,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO48,900^GFA,15180,15180,44,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO48,1326^GFA,25752,25752,111,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,6 @@
|
||||
^XA^PW609^LL406^LH0,0^CI28
|
||||
^FO20,20^GFA,4320,4320,36,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000Line truncated
|
||||
^FO20,130^GFA,1260,1260,21,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO20,230^GFA,1287,1287,13,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFF8FC7E3803FFFFE0000000FFFFF8FC7E3803FFFFE0000000FFFFF8FC7E3803FFFFE0000000E00038E00FF8E38000E0000000E00038E00FF8E38000E0000000E00038E00FF8E38000E0000000E3FE381F81FFE38FF8E0000000E3FE381F81FFE38FF8E0000000E3FE381F81FFE38FF8E0000000E3FE380071FF038FF8E0000000E3FE380071FF038FF8E0000000E3FE380071FF038FF8E0000000E3FE38FC0FC0038FF8E0000000E3FE38FC0FC0038FF8E0000000E3FE38FC0FC0038FF8E0000000E00038E001F8038000E0000000E00038E001F8038000E0000000E00038E001F8038000E0000000FFFFF8E38E38E3FFFFE0000000FFFFF8E38E38E3FFFFE0000000FFFFF8E38E38E3FFFFE0000000000000E00E07E0000000000000000000E00E07E0000000000000000000E00E07E0000000000000FF81F8FFF000FFFE07E0000000FF81F8FFF000FFFE07E0000000FF81F8FFF000FFFE07E0000000FC0000E07E071FF1C7E0000000FC0000E07E071FF1C7E0000000FC0000E07E071FF1C7E000000003FFF81FF1FF1C0FF8E000000003FFF81FF1FF1C0FF8E000000003FFF81FF1FF1C0FF8E0000000038FC0E07038E071C000000000038FC0E07038E071C000000000038FC0E07038E071C0000000001C7FFF1FF007E3F000E00000001C7FFF1FF007E3F000E00000001C7FFF1FF007E3F000E00000001C7E001FFFC7E3F007E00000001C7E001FFFC7E3F007E00000001C7E001FFFC7E3F007E0000000FF8038E071C7FF81F8E0000000FF8038E071C7FF81F8E0000000FF8038E071C7FF81F8E00000000381C71F8E00FC7FC0000000000381C71F8E00FC7FC0000000000381C71F8E00FC7FC000000000FC003F03FE00FFFE0700000000FC003F03FE00FFFE0700000000FC003F03FE00FFFE0700000000000000FFFFC0E00E00E0000000000000FFFFC0E00E00E0000000000000FFFFC0E00E00E0000000FFFFF8007FF8E38E00E0000000FFFFF8007FF8E38E00E0000000FFFFF8007FF8E38E00E0000000E00038E38E3FE00E0700000000E00038E38E3FE00E0700000000E00038E38E3FE00E0700000000E3FE381C7007FFFE0000000000E3FE381C7007FFFE0000000000E3FE381C7007FFFE0000000000E3FE381FFE001C0E3F00000000E3FE381FFE001C0E3F00000000E3FE381FFE001C0E3F00000000E3FE38E071C7FC7FC7E0000000E3FE38E071C7FC7FC7E0000000E3FE38E071C7FC7FC7E0000000E00038E3FE07FFFE0000000000E00038E3FE07FFFE0000000000E00038E3FE07FFFE0000000000FFFFF8FC0E38E381C0E0000000FFFFF8FC0E38E381C0E0000000FFFFF8FC0E38E381C0E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO200,230^GFA,968,968,11,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0F0F0F0F0F0F000000000F0F0F0F0F0F0F000000000F0F0F0F0F0F0F000000000F0F0F0F0F0F0F000000000F0FF000F00000F00000000F0FF000F00000F00000000F0FF000F00000F00000000F0FF000F00000F00000000F00000F0FFF00000000000F00000F0FFF00000000000F00000F0FFF00000000000F00000F0FFF00000000000FFF0F0F000FF0F00000000FFF0F0F000FF0F00000000FFF0F0F000FF0F00000000FFF0F0F000FF0F00000000F0F0FF00000FF000000000F0F0FF00000FF000000000F0F0FF00000FF000000000F0F0FF00000FF000000000FF000F00FF000F00000000FF000F00FF000F00000000FF000F00FF000F00000000FF000F00FF000F00000000F00F00FF00000000000000F00F00FF00000000000000F00F00FF00000000000000F00F00FF00000000000000F00FF0F0FF00FF00000000F00FF0F0FF00FF00000000F00FF0F0FF00FF00000000F00FF0F0FF00FF00000000FFFFFF0F0FF0F000000000FFFFFF0F0FF0F000000000FFFFFF0F0FF0F000000000FFFFFF0F0FF0F000000000F0FFFFFF0FFF0F00000000F0FFFFFF0FFF0F00000000F0FFFFFF0FFF0F00000000F0FFFFFF0FFF0F00000000FF0F0F0FF000F000000000FF0F0F0FF000F000000000FF0F0F0FF000F000000000FF0F0F0FF000F000000000FFFFFF00FF000F00000000FFFFFF00FF000F00000000FFFFFF00FF000F00000000FFFFFF00FF000F00000000FF000FF0F00F0000000000FF000FF0F00F0000000000FF000FF0F00F0000000000FF000FF0F00F0000000000FFFFFFFFFFFFFF00000000FFFFFFFFFFFFFF00000000FFFFFFFFFFFFFF00000000FFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,6 @@
|
||||
^XA^PW900^LL600^LH0,0^CI28
|
||||
^FO30,30^GFA,9720,9720,54,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000Line truncated
|
||||
^FO30,192^GFA,1260,1260,21,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D00000025B55B2D655ACAB6535AA6D536A9B5A5696D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO30,340^GFA,2244,2244,17,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFF0FF0FF0F000FFFFFFF000000000FFFFFFF0FF0FF0F000FFFFFFF000000000FFFFFFF0FF0FF0F000FFFFFFF000000000FFFFFFF0FF0FF0F000FFFFFFF000000000F00000F0F000FFF0F0F00000F000000000F00000F0F000FFF0F0F00000F000000000F00000F0F000FFF0F0F00000F000000000F00000F0F000FFF0F0F00000F000000000F0FFF0F00FF00FFFF0F0FFF0F000000000F0FFF0F00FF00FFFF0F0FFF0F000000000F0FFF0F00FF00FFFF0F0FFF0F000000000F0FFF0F00FF00FFFF0F0FFF0F000000000F0FFF0F0000F0FFF00F0FFF0F000000000F0FFF0F0000F0FFF00F0FFF0F000000000F0FFF0F0000F0FFF00F0FFF0F000000000F0FFF0F0000F0FFF00F0FFF0F000000000F0FFF0F0FF00FF0000F0FFF0F000000000F0FFF0F0FF00FF0000F0FFF0F000000000F0FFF0F0FF00FF0000F0FFF0F000000000F0FFF0F0FF00FF0000F0FFF0F000000000F00000F0F0000FF000F00000F000000000F00000F0F0000FF000F00000F000000000F00000F0F0000FF000F00000F000000000F00000F0F0000FF000F00000F000000000FFFFFFF0F0F0F0F0F0FFFFFFF000000000FFFFFFF0F0F0F0F0F0FFFFFFF000000000FFFFFFF0F0F0F0F0F0FFFFFFF000000000FFFFFFF0F0F0F0F0F0FFFFFFF00000000000000000F000F00FF0000000000000000000000000F000F00FF0000000000000000000000000F000F00FF0000000000000000000000000F000F00FF00000000000000000FFF00FF0FFFF0000FFFFF00FF000000000FFF00FF0FFFF0000FFFFF00FF000000000FFF00FF0FFFF0000FFFFF00FF000000000FFF00FF0FFFF0000FFFFF00FF000000000FF000000F00FF00F0FFF0F0FF000000000FF000000F00FF00F0FFF0F0FF000000000FF000000F00FF00F0FFF0F0FF000000000FF000000F00FF00F0FFF0F0FF00000000000FFFFF00FFF0FFF0F00FFF0F00000000000FFFFF00FFF0FFF0F00FFF0F00000000000FFFFF00FFF0FFF0F00FFF0F00000000000FFFFF00FFF0FFF0F00FFF0F00000000000F0FF00F00F00F0F00F0F00000000000000F0FF00F00F00F0F00F0F00000000000000F0FF00F00F00F0F00F0F00000000000000F0FF00F00F00F0F00F0F0000000000000F0FFFFF0FFF000FF0FF0000F0000000000F0FFFFF0FFF000FF0FF0000F0000000000F0FFFFF0FFF000FF0FF0000F0000000000F0FFFFF0FFF000FF0FF0000F0000000000F0FF0000FFFFF0FF0FF000FF0000000000F0FF0000FFFFF0FF0FF000FF0000000000F0FF0000FFFFF0FF0FF000FF0000000000F0FF0000FFFFF0FF0FF000FF000000000FFF000F0F00F0F0FFFF00FF0F000000000FFF000F0F00F0F0FFFF00FF0F000000000FFF000F0F00F0F0FFFF00FF0F000000000FFF000F0F00F0F0FFFF00FF0F00000000000F00F0F0FF0F000FF0FFF00000000000000F00F0F0FF0F000FF0FFF00000000000000F00F0F0FF0F000FF0FFF00000000000000F00F0F0FF0F000FF0FFF000000000000FF0000FF00FFF000FFFFF00F0000000000FF0000FF00FFF000FFFFF00F0000000000FF0000FF00FFF000FFFFF00F0000000000FF0000FF00FFF000FFFFF00F000000000000000000FFFFFF00F000F000F00000000000000000FFFFFF00F000F000F00000000000000000FFFFFF00F000F000F00000000000000000FFFFFF00F000F000F000000000FFFFFFF0000FFFF0F0F0F000F000000000FFFFFFF0000FFFF0F0F0F000F000000000FFFFFFF0000FFFF0F0F0F000F000000000FFFFFFF0000FFFF0F0F0F000F000000000F00000F0F0F0F0FFF000F00F0000000000F00000F0F0F0F0FFF000F00F0000000000F00000F0F0F0F0FFF000F00F0000000000F00000F0F0F0F0FFF000F00F0000000000F0FFF0F00F0F000FFFFFF0000000000000F0FFF0F00F0F000FFFFFF0000000000000F0FFF0F00F0F000FFFFFF0000000000000F0FFF0F00F0F000FFFFFF0000000000000F0FFF0F00FFFF0000F00F0FF0000000000F0FFF0F00FFFF0000F00F0FF0000000000F0FFF0F00FFFF0000F00F0FF0000000000F0FFF0F00FFFF0000F00F0FF0000000000F0FFF0F0F00F0F0FFF0FFF0FF000000000F0FFF0F0F00F0F0FFF0FFF0FF000000000F0FFF0F0F00F0F0FFF0FFF0FF000000000F0FFF0F0F00F0F0FFF0FFF0FF000000000F00000F0F0FFF00FFFFFF0000000000000F00000F0F0FFF00FFFFFF0000000000000F00000F0F0FFF00FFFFFF0000000000000F00000F0F0FFF00FFFFFF0000000000000FFFFFFF0FF00F0F0F0F00F00F000000000FFFFFFF0FF00F0F0F0F00F00F000000000FFFFFFF0FF00F0F0F0F00F00F000000000FFFFFFF0FF00F0F0F0F00F00F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO296,340^GFA,2244,2244,17,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC0FC0FC0FC0FC0FC0FC00000000000000FC0FC0FC0FC0FC0FC0FC00000000000000FC0FC0FC0FC0FC0FC0FC00000000000000FC0FC0FC0FC0FC0FC0FC00000000000000FC0FC0FC0FC0FC0FC0FC00000000000000FC0FC0FC0FC0FC0FC0FC00000000000000FC0FFF00003F00000003F0000000000000FC0FFF00003F00000003F0000000000000FC0FFF00003F00000003F0000000000000FC0FFF00003F00000003F0000000000000FC0FFF00003F00000003F0000000000000FC0FFF00003F00000003F0000000000000FC0000000FC0FFFFC00000000000000000FC0000000FC0FFFFC00000000000000000FC0000000FC0FFFFC00000000000000000FC0000000FC0FFFFC00000000000000000FC0000000FC0FFFFC00000000000000000FC0000000FC0FFFFC00000000000000000FFFFC0FC0FC0000FFF03F0000000000000FFFFC0FC0FC0000FFF03F0000000000000FFFFC0FC0FC0000FFF03F0000000000000FFFFC0FC0FC0000FFF03F0000000000000FFFFC0FC0FC0000FFF03F0000000000000FFFFC0FC0FC0000FFF03F0000000000000FC0FC0FFF00000003FFC00000000000000FC0FC0FFF00000003FFC00000000000000FC0FC0FFF00000003FFC00000000000000FC0FC0FFF00000003FFC00000000000000FC0FC0FFF00000003FFC00000000000000FC0FC0FFF00000003FFC00000000000000FFF00003F000FFF00003F0000000000000FFF00003F000FFF00003F0000000000000FFF00003F000FFF00003F0000000000000FFF00003F000FFF00003F0000000000000FFF00003F000FFF00003F0000000000000FFF00003F000FFF00003F0000000000000FC003F000FFF0000000000000000000000FC003F000FFF0000000000000000000000FC003F000FFF0000000000000000000000FC003F000FFF0000000000000000000000FC003F000FFF0000000000000000000000FC003F000FFF0000000000000000000000FC003FFC0FC0FFF000FFF0000000000000FC003FFC0FC0FFF000FFF0000000000000FC003FFC0FC0FFF000FFF0000000000000FC003FFC0FC0FFF000FFF0000000000000FC003FFC0FC0FFF000FFF0000000000000FC003FFC0FC0FFF000FFF0000000000000FFFFFFFFF03F03FFC0FC00000000000000FFFFFFFFF03F03FFC0FC00000000000000FFFFFFFFF03F03FFC0FC00000000000000FFFFFFFFF03F03FFC0FC00000000000000FFFFFFFFF03F03FFC0FC00000000000000FFFFFFFFF03F03FFC0FC00000000000000FC0FFFFFFFFF03FFFF03F0000000000000FC0FFFFFFFFF03FFFF03F0000000000000FC0FFFFFFFFF03FFFF03F0000000000000FC0FFFFFFFFF03FFFF03F0000000000000FC0FFFFFFFFF03FFFF03F0000000000000FC0FFFFFFFFF03FFFF03F0000000000000FFF03F03F03FFC0000FC00000000000000FFF03F03F03FFC0000FC00000000000000FFF03F03F03FFC0000FC00000000000000FFF03F03F03FFC0000FC00000000000000FFF03F03F03FFC0000FC00000000000000FFF03F03F03FFC0000FC00000000000000FFFFFFFFF000FFF00003F0000000000000FFFFFFFFF000FFF00003F0000000000000FFFFFFFFF000FFF00003F0000000000000FFFFFFFFF000FFF00003F0000000000000FFFFFFFFF000FFF00003F0000000000000FFFFFFFFF000FFF00003F0000000000000FFF00003FFC0FC003F0000000000000000FFF00003FFC0FC003F0000000000000000FFF00003FFC0FC003F0000000000000000FFF00003FFC0FC003F0000000000000000FFF00003FFC0FC003F0000000000000000FFF00003FFC0FC003F0000000000000000FFFFFFFFFFFFFFFFFFFFF0000000000000FFFFFFFFFFFFFFFFFFFFF0000000000000FFFFFFFFFFFFFFFFFFFFF0000000000000FFFFFFFFFFFFFFFFFFFFF0000000000000FFFFFFFFFFFFFFFFFFFFF0000000000000FFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,6 @@
|
||||
^XA^PW1800^LL1200^LH0,0^CI28
|
||||
^FO59,59^GFA,38880,38880,108,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO59,384^GFA,10980,10980,61,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000381C7E3F1C71C7E3F038FC71F81C71C7E38FC0E38E3F1F81C703F1C7E38E381F8FC71C703F1F8E38E07E3F1C7E381C71F8E071F8FC7000000000000000381C7E3F1C71C7E3F038FC71F81C71C7E38FC0E38E3F1F81C703F1C7E38E381F8FC71C703F1F8E38E07E3F1C7E381C71F8E071F8FC7000000000000000381C7E3F1C71C7E3F038FC71F81C71C7E38FC0E38E3F1F81C703F1C7E38E381F8FC71C703F1F8E38E07E3F1C7E381C71F8E071F8FC7000000000000000381C7E3F1C71C7E3F038FC71F81C71C7E38FC0E38E3F1F81C703F1C7E38E381F8FC71C703F1F8E38E07E3F1C7E381C71F8E071F8FC7000000000000000381C7E3F1C71C7E3F038FC71F81C71C7E38FC0E38E3F1F81C703F1C7E38E381F8FC71C703F1F8E38E07E3F1C7E381C71F8E071F8FC7000000000000000381C7E3F1C71C7E3F038FC71F81C71C7E38FC0E38E3F1F81C703F1C7E38E381F8FC71C703F1F8E38E07E3F1C7E381C71F8E071F8FC7000000000000000381C7E3F1C71C7E3F038FC71F81C71C7E38FC0E38E3F1F81C703F1C7E38E381F8FC71C703F1F8E38E07E3F1C7E381C71F8E071F8FC7000000000000000381C7E3F1C71C7E3F038FC71F81C71C7E38FC0E38E3F1F81C703F1C7E38E381F8FC71C703F1F8E38E07E3F1C7E381C71F8E071F8FC7000000000000000381C7E3F1C71C7E3F038FC71F81C71C7E38FC0E38E3F1F81C703F1C7E38E381F8FC71C703F1F8E38E07E3F1C7E381C71F8E071F8FC7000000000000000381C7E3F1C71C7E3F038FC71F81C71C7E38FC0E38E3F1F81C703F1C7E38E381F8FC71C703F1F8E38E07E3F1C7E381C71F8E071F8FC7000000000000000381C7E3F1C71C7E3F038FC71F81C71C7E38FC0E38E3F1F81C703F1C7E38E381F8FC71C703F1F8E38E07Line truncated
|
||||
^FO59,680^GFA,11286,11286,38,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFE00FFFFC01FFFF803FE0000003FFFFFFFFFFFFFFF80000000000000000000FFFFFFFFFFFFFFFE00FFFFC01FFFF803FE0000003FFFFFFFFFFFFFFF80000000000000000000FFFFFFFFFFFFFFFE00FFFFC01FFFF803FE0000003FFFFFFFFFFFFFFF80000000000000000000FFFFFFFFFFFFFFFE00FFFFC01FFFF803FE0000003FFFFFFFFFFFFFFF80000000000000000000FFFFFFFFFFFFFFFE00FFFFC01FFFF803FE0000003FFFFFFFFFFFFFFF80000000000000000000FFFFFFFFFFFFFFFE00FFFFC01FFFF803FE0000003FFFFFFFFFFFFFFF80000000000000000000FFFFFFFFFFFFFFFE00FFFFC01FFFF803FE0000003FFFFFFFFFFFFFFF80000000000000000000FFFFFFFFFFFFFFFE00FFFFC01FFFF803FE0000003FFFFFFFFFFFFFFF80000000000000000000FFFFFFFFFFFFFFFE00FFFFC01FFFF803FE0000003FFFFFFFFFFFFFFF80000000000000000000FF800000000003FE00FF8000000FFFFFFE00FF803FE00000000000FF80000000000000000000FF800000000003FE00FF8000000FFFFFFE00FF803FE00000000000FF80000000000000000000FF800000000003FE00FF8000000FFFFFFE00FF803FE00000000000FF80000000000000000000FF800000000003FE00FF8000000FFFFFFE00FF803FE00000000000FF80000000000000000000FF800000000003FE00FF8000000FFFFFFE00FF803FE00000000000FF80000000000000000000FF800000000003FE00FF8000000FFFFFFE00FF803FE00000000000FF80000000000000000000FF800000000003FE00FF8000000FFFFFFE00FF803FE00000000000FF80000000000000000000FF800000000003FE00FF8000000FFFFFFE00FF803FE00000000000FF80000000000000000000FF800000000003FE00FF8000000FFFFFFE00FF803FE00000000000FF80000000000000000000FF803FFFFFF803FE00007FFFE00007FFFFFFFF803FE00FFFFFFE00FF80000000000000000000FF803FFFFFF803FE00007FFFE00007FFFFFFFF803FE00FFFFFFE00FF80000000000000000000FF803FFFFFF803FE00007FFFE00007FFFFFFFF803FE00FFFFFFE00FF80000000000000000000FF803FFFFFF803FE00007FFFE00007FFFFFFFF803FE00FFFFFFE00FF80000000000000000000FF803FFFFFF803FE00007FFFE00007FFFFFFFF803FE00FFFFFFE00FF80000000000000000000FF803FFFFFF803FE00007FFFE00007FFFFFFFF803FE00FFFFFFE00FF80000000000000000000FF803FFFFFF803FE00007FFFE00007FFFFFFFF803FE00FFFFFFE00FF80000000000000000000FF803FFFFFF803FE00007FFFE00007FFFFFFFF803FE00FFFFFFE00FF80000000000000000000FF803FFFFFF803FE00007FFFE00007FFFFFFFF803FE00FFFFFFE00FF80000000000000000000FF803FFFFFF803FE000000001FF007FFFFFF00003FE00FFFFFFE00FF80000000000000000000FF803FFFFFF803FE000000001FF007FFFFFF00003FE00FFFFFFE00FF80000000000000000000FF803FFFFFF803FE00000Line truncated
|
||||
^FO591,680^GFA,8712,8712,33,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFF000FFF000FFF000FFF000FFF000FFF000000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000FFFFFF000000000FFF000000000000000FFF000000000000000000000000FFF000000000000000FFF000FFFFFFFFF000000000000000000000000000000000FFF000000000000000FFF000FFFFFFFFF000000000000000000000000000000000FFF000000000000000FFF000FFFFFFFFF000000000000000000000000000000000FFF000000Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,6 @@
|
||||
^XA^PW609^LL406^LH0,0^CI28
|
||||
^FO20,20^GB200,100,3^FS
|
||||
^FO240,20^GB60,60,30^FS
|
||||
^FO20,140^GB500,2,2^FS
|
||||
^FO560,20^GB2,200,2^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,6 @@
|
||||
^XA^PW900^LL600^LH0,0^CI28
|
||||
^FO30,30^GB296,148,4^FS
|
||||
^FO355,30^GB89,89,44^FS
|
||||
^FO30,207^GB739,3,3^FS
|
||||
^FO828,30^GB3,296,3^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,6 @@
|
||||
^XA^PW1800^LL1200^LH0,0^CI28
|
||||
^FO59,59^GB591,296,9^FS
|
||||
^FO709,59^GB177,177,89^FS
|
||||
^FO59,414^GB1478,6,6^FS
|
||||
^FO1655,59^GB6,591,6^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,4 @@
|
||||
^XA^PW812^LL203^LH0,0^CI28
|
||||
^FO32,32^GFA,2280,2280,38,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000034E7AECD9B333676EBB10B36F44CC49C9B3666CDC97BB71468DD1B8AEF6CCCD911B1D600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO32,144^A0N,24,10^FH_^FD_28_30_31_29_30_30_30_31_32_33_34_35_36_37_38_39_30_35_28_31_31_29_32_36_30_31_30_31_28_32_31_29_54_45_53_54_30_30_30_31^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,4 @@
|
||||
^XA^PW1200^LL300^LH0,0^CI28
|
||||
^FO48,48^GFA,9000,9000,75,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CLine truncated
|
||||
^FO48,212^A0N,36,15^FH_^FD_28_30_31_29_30_30_30_31_32_33_34_35_36_37_38_39_30_35_28_31_31_29_32_36_30_31_30_31_28_32_31_29_54_45_53_54_30_30_30_31^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,4 @@
|
||||
^XA^PW827^LL203^LH0,0^CI28
|
||||
^FO32,32^GFA,9000,9000,75,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CF0F0F0F3C3F3CFCCFCF0300CF0F3CFF3030F0F030C3F0C3CF0F3C3C3CF0F3F0C33FCFCF3F03303CC0F3F303CFC0CCFCFF3CF0F0F0F3C30303CF03F33C00000000000F30FC3FCCFCF0F3C3CLine truncated
|
||||
^FO32,162^GFA,3840,3840,96,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000003000000000000000000000000000000000000000000000000000000000200000000C0000000000000000000000000040000000180000000000000000000000000000000000000000000000000000000000000000000000000000000100000000100000000000000000000000000000000000000000000000000000000040000000040000000000000000000000000080000000080000000000000000000000000000000000000000000000000000000000000000000000000000000201F000C00800F801F001F000C003E007C000403FC01F80FFE07C007E00F801FE008018001802003E007E00F8003001F000600100F800600407FF0FFE07E07FF03E007C007C003000000000000000000000000000000000000000000000000004031C03C004018E031C031C03C00E300C7000407FC030C0FFC0C700C3018E03FE01007800780100E300C3018E00F0031C01E002038C01E00207FF0FFE0C307FF06380C700C700F00000000000000000000000000000000000000000000000000406040C40060302060406040C400818181000C0600060608041810181830203000101880188018081818183020310060406200202060620030020080018180200C081810181031000000000000000000000000000000000000000000000000008040600400202030406040600401808101800C06000402080C101810082030300020008000800818081008203001004060020040602002001002008001008020080C10181018010000000000000000000000000000000000000000000000000080C0200400206010C020C020040100C300801C0400040200083008100860102000200080008008100C100860100100C020020040403002001002008003008020180430083008010000000000000000000000000000000000000000000000000180C0200400306010C020C020040000C000803C040004000018300810086010200060008000800C000C100060100100C0200200C0003002001802008003000020180430083008010000000000000000000000000000000000000000000000000100C0200400106010C020C0200400008000802404000400001030081008601020004000800080040008100060100100C020020080002002000802008001000020180430083008010000000000000000000000000000000000000000000000000100C0200400106010C020C0200400008001806404F00400001010181008601027804000800080040008100060100100C020020080002002000802008001800020180430083008010000000000000000000000000000000000000000000000000300C0200400186010C020C02004000080030044079C040000301830100860103CE0C000800080060008100060100100C020020180002002000C02008001C00020180430083008010000000000000000000000000000000000000000000000000300C0200400186010C020C020040001000E00C4060405F800200EE0181860103020C00080008006001017E060100100C020020180004002000C02008000700020180430083008010000000000000000000000000000000000000000000000000200C0200400086010C020C020040001001E00840406070C00600FE00C386010203080008000800200101C3060100100C02002010000400200040200FF801C0020180430083008010000000000000000000000000000000000000000000000000200C0200400086010C020C020040002000301840C0206060040183007E8601060108000800080020020181860100100C020020100008002000402008000070020180430083008010000000000000000000000000000000000000000000000000200C0200400086010C020C020040006000103040002040200C010180008601000108000800080020060100860100100C020020100018002000402008000018020180430083008010000000000000000000000000000000000000000000000000200C0200400086010C020C02004000C00008204000204020080300800086010001080008000800200C0100860100100C020020100030002000402008000008020180430083008010000000000000000000000000000000000000000000000000200C0200400086010C020C0200400080000860400020402008030080008601000108000800080020080100860100100C02002010002000200040200800000C020180430083008010000000000000000000000000000000000000000000000000300C0200400186010C020C0200400100000860C0002040201803008000860100010C000800080060100100860100100C020020180040002000C0200800200C020180430083008010000000000000000000000000000000000000000000000000100C0200400186010C020C02004003003008FFF0C020402010030081008601060104000800080060300100860100100C0200200800C0002000C0200800200C02018043008300801000000Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,4 @@
|
||||
^XA^PW1222^LL300^LH0,0^CI28
|
||||
^FO36,36^GFA,20160,20160,112,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO36,206^GFA,8178,8178,141,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000080000000000000000000000000000000000000010000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000E000000000000C0000000000000000000000000000000000000038000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000001C0000000000006000000000000000000000000000000000000007000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006003F00000C000C0003F00007E0000FC0000600007E0001F800000800FFF8001F8007FFF801F80001F80007E000FFF80018001800003000300007E0001F80007E0000180003F00000C00006003F000018001801FFFF07FFF800FE01FFFF003F0000FC0001F80000C00000000000000000000000000000000000000000000000000000000000000000000000000C00FFC0007C000E000FFC001FF8003FF0003E0001FF8007FE00000800FFF8007FE007FFF807FE0007FE001FF800FFF8003000F80001F00038001FF8007FE001FF8000F8000FFC0007C0000C00FFC000F8001C01FFFF07FFFC03FF81FFFF00FFC003FF0007FE0007C00000000000000000000000000000000000000000000000000000000000000000000000001C01E0E001FC0006001E0E003C1C00783800FE000383C00F0700001800FFF800E0F007FFF80F07000E0F003C1C00FFF8007003F80007F0001800383C00E0F003C1C003F8001E0E001FC0001C01C1E003F8000C01FFFF07FFF80783C1FFFF01E0E00783800F07001FC00000000000000000000000000000000000000000000000000000000000000000000000001803807007CC000300380700700E00E01C03E6000700E01C0380003800C00001C0380600301C03801C0380700E00C00000600F98001F30000C00700E01C0380700E00F98003807007CC000180380700F9800060001800600000E00E001800380700E01C01C03807CC000000000000000000000000000000000000000000000000000000000000000000000000030030038060C000380300380600700C00E0306000E00E01801C0003800C0000380180600301801C0380180600700C00000C00C18001830000E00E00E0380180600700C1800300Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,3 @@
|
||||
^XA^PW812^LL203^LH0,0^CI28
|
||||
^FO32,32^GFA,4320,4320,36,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,3 @@
|
||||
^XA^PW1200^LL300^LH0,0^CI28
|
||||
^FO48,48^GFA,9720,9720,54,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000003F1C0E001F8FF8038E00FC7007E3FE3803F1FF0071C0FC7FC0E3FE3FFC7E3F03F03F03F1F81F81FF1C0FC01FF1C7E0000000000000Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,3 @@
|
||||
^XA^PW812^LL203^LH0,0^CI28
|
||||
^FO32,32^GFA,1968,1968,16,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFE38E00FFFFF80000000000000003FFFFE38E00FFFFF80000000000000003FFFFE38E00FFFFF800000000000000038000E071F8E0003800000000000000038000E071F8E0003800000000000000038000E071F8E0003800000000000000038FF8E07038E3FE3800000000000000038FF8E07038E3FE3800000000000000038FF8E07038E3FE3800000000000000038FF8E38038E3FE3800000000000000038FF8E38038E3FE3800000000000000038FF8E38038E3FE3800000000000000038FF8E071C0E3FE3800000000000000038FF8E071C0E3FE3800000000000000038FF8E071C0E3FE3800000000000000038000E00FC0E0003800000000000000038000E00FC0E0003800000000000000038000E00FC0E000380000000000000003FFFFE38E38FFFFF80000000000000003FFFFE38E38FFFFF80000000000000003FFFFE38E38FFFFF800000000000000000000007E3800000000000000000000000000007E3800000000000000000000000000007E3800000000000000000000000E3FE38E3F00703800000000000000000E3FE38E3F00703800000000000000000E3FE38E3F007038000000000000000071F80381C7FC7E38000000000000000071F80381C7FC7E38000000000000000071F80381C7FC7E380000000000000000703FE381C00381F80000000000000000703FE381C00381F80000000000000000703FE381C00381F8000000000000000381C003FFFFFC71F8000000000000000381C003FFFFFC71F8000000000000000381C003FFFFFC71F80000000000000003FFF8FFF1C0E3FE380000000000000003FFF8FFF1C0E3FE380000000000000003FFF8FFF1C0E3FE380000000000000000000003F0071FF0000000000000000000000003F0071FF0000000000000000000000003F0071FF0000000000000000003FFFFE0703FE3F1C00000000000000003FFFFE0703FE3F1C00000000000000003FFFFE0703FE3F1C000000000000000038000E3F1C01C0FC000000000000000038000E3F1C01C0FC000000000000000038000E3F1C01C0FC000000000000000038FF8E38E3FE38FF800000000000000038FF8E38E3FE38FF800000000000000038FF8E38E3FE38FF800000000000000038FF8E07E00FC0FC000000000000000038FF8E07E00FC0FC000000000000000038FF8E07E00FC0FC000000000000000038FF8E38E3F03FE3800000000000000038FF8E38E3F03FE3800000000000000038FF8E38E3F03FE3800000000000000038000E00E07FC01F800000000000000038000E00E07FC01F800000000000000038000E00E07FC01F80000000000000003FFFFE07FFF038E380000000000000003FFFFE07FFF038E380000000000000003FFFFE07FFF038E3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,3 @@
|
||||
^XA^PW812^LL203^LH0,0^CI28
|
||||
^FO32,32^GFA,4320,4320,36,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000F30C03CFC0CC0F303CFCC0F3F0330F3F0CFCFF3CF0F0F0F3C3C3F30F03F33C0000000000Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,3 @@
|
||||
^XA^PW812^LL203^LH0,0^CI28
|
||||
^FO32,32^GFA,3770,3770,29,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F30FC330FCCC0000000000CC0F30F0C30F3FCCC0F3C0CCCCC03030C303F3Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,3 @@
|
||||
^XA^PW1200^LL300^LH0,0^CI28
|
||||
^FO48,48^GFA,8580,8580,44,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38E380070070381C01FF1C0FF81C703FE38E000000000000000038E00FC703F0381C0FC7FF8E3803F1F8038E38Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,4 @@
|
||||
^XA^PW609^LL406^LH0,0^CI28
|
||||
^FO20,20^GFA,144,144,6,FFFFFFFFFFFFFFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFFFFFFFFFFFFFF^FS
|
||||
^FO100,60^GFA,144,144,6,FFFFFFFFFFFFFFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFFFFFFFFFFFFFF^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,4 @@
|
||||
^XA^PW900^LL600^LH0,0^CI28
|
||||
^FO30,30^GFA,144,144,6,FFFFFFFFFFFFFFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFFFFFFFFFFFFFF^FS
|
||||
^FO148,89^GFA,144,144,6,FFFFFFFFFFFFFFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFFFFFFFFFFFFFF^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,4 @@
|
||||
^XA^PW1800^LL1200^LH0,0^CI28
|
||||
^FO59,59^GFA,144,144,6,FFFFFFFFFFFFFFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFFFFFFFFFFFFFF^FS
|
||||
^FO296,177^GFA,144,144,6,FFFFFFFFFFFFFFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFF800000FFFFFFFFFFFFFFFFFF^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,7 @@
|
||||
^XA^PW609^LL406^LH0,0^CI28
|
||||
^FO20,20^GFA,2000,2000,50,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018007FC0FF87FF00003FF87FC07E07FF00000FC03F007E00F00000000000000000000000000000000000000000000000000018004000800060000003004000C30060000018606180C301B000000000000000000000000000000000000000000000000000180040008000600000030040008180600000103040C0818330000000000000000000000000000000000000000000000000001800400080006000000300400181806000003010C041808630000000000000000000000000000000000000000000000000001800400080006000000300400080006000003010C0418080300000000000000000000000000000000000000000000000000018004000800060000003004000C0006000003010C0418080300000000000000000000000000000000000000000000000000018004000800060000003004000E0006000003010C0418080300000000000000000000000000000000000000000000000000018007F80C00060000003007F807C006000003310CC419880300000000000000000000000000000000000000000000000000018007F80FF8060000003007F800F006000003310CC41988030000000000000000000000000000000000000000000000000001800400080006000000300400003806000003010C041808030000000000000000000000000000000000000000000000000001800400080006000000300400001806000003010C041808030000000000000000000000000000000000000000000000000001800400080006000000300400000806000003010C041808030000000000000000000000000000000000000000000000000001800400080006000000300400100806000003010C041808030000000000000000000000000000000000000000000000000001800400080006000000300400180806000003030C0C18180300000000000000000000000000000000000000000000000000018004000800060000003004000C180600000183060C0C18030000000000000000000000000000000000000000000000000001FF87FC0800060000003007FC0F7006000001CE07380E707FF000000000000000000000000000000000000000000000000001FF87FC0800060000003007FC03E0060000007C01F003E07FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO20,70^GFA,2000,2000,50,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007F00000000060000000000001FFC0000000060000007E00FC03F007800000000000000000000000000000000000000000000C380000000060000000000000180000000006000000C3018606180D800000000000000000000000000000000000000000000C180000000060000000000000180000000006000000818103040C1980000000000000000000000000000000000000000000080800000000600000000000001800000000060000018083010C04318000000000000000000000000000000000000000000018000F819E07FF06F807C0000018007C03F07FF000018083010C040180000000000000000000000000000000000000000000180038C1A30060071C1C6000001801C60618060000018083010C04018000000000000000000000000000000000000000000018002061C18060060C10300000180103040C060000018083010C040180000000000000000000000000000000000000000000180060618180600604303000001803030400060000019883310CC40180000000000000000000000000000000000000000000180060218180600604301000001803010400060000019883310CC401800000000000000000000000000000000000000000001800606181806006003030000018030307C0060000018083010C04018000000000000000000000000000000000000000000018007FE181806006003FF000001803FF01F8060000018083010C04018000000000000000000000000000000000000000000018006001818060060030000000180300000C060000018083010C04018000000000000000000000000000000000000000000008086001818060060030000000180300000C060000018083010C04018000000000000000000000000000000000000000000008186001818060060030000000180300000C060000018183030C0C01800000000000000000000000000000000000000000000C1830618180600600183000001801830C0C06000000C18183060C0180000000000000000000000000000000000000000000077039C181803F06001CE000001801CE073803F00000E701CE07383FF800000000000000000000000000000000000000000003E00F8181801F060007C0000018007C03F001F000003E007C01F03FF8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO20,120^GFA,2000,2000,50,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001FC07F807E02060FFE0000FFE0FF81F80FFE00003F007E01F801E0000000000000000000000000000000000000000000000010600C00C3020600C000000C0080030C00C000006180C3030C0360000000000000000000000000000000000000000000000010300C008182060040000004008002060040000040C08182060660000000000000000000000000000000000000000000000010100C0080820600400000040080020000400000C0418086020060000000000000000000000000000000000000000000000010100C0180020600400000040080020000400000C0418086020060000000000000000000000000000000000000000000000010100C0180020600400000040080020000400000C0418086020060000000000000000000000000000000000000000000000010300C0180020600400000040080030000400000C0418086020060000000000000000000000000000000000000000000000010600C018003FE004000000400FF01F000400000CC41988662006000000000000000000000000000000000000000000000001FC00C018F83FE004000000400C0003C00400000CC419886620060000000000000000000000000000000000000000000000010800C0181820600400000040080000600400000C0418086020060000000000000000000000000000000000000000000000010C00C0180820600400000040080000600400000C0418086020060000000000000000000000000000000000000000000000010400C0180820600400000040080000200400000C0418086020060000000000000000000000000000000000000000000000010600C0080820600400000040080000200400000C0418086020060000000000000000000000000000000000000000000000010600C0081820600400000040080060200400000C0C18186060060000000000000000000000000000000000000000000000010300C00C182060040000004008002060040000040C08182060060000000000000000000000000000000000000000000000010307F80670206004000000400FF839C00400000318063018C07FE000000000000000000000000000000000000000000000010107F803C0206004000000400FF80F0004000001E003C00F007FE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO20,170^GFA,5000,5000,50,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300308020FFE001F010041FFC00000000000000000000000000000000000000000000000000000000000000000000000000030030C060FFE007FC180C1FFC00000000000000000000000000000000000000000000000000000000000000000000000000030030C060C000060C180C180000000000000000000000000000000000000000000000000000000000000000000000000000030030E060C0000C061C0C180000000000000000000000000000000000000000000000000000000000000000000000000000030030F060C0000C061E0C180000000000000000000000000000000000000000000000000000000000000000000000000000030030F060C0000C061E0C180000000000000000000000000000000000000000000000000000000000000000000000000000030030D860C0000C061B0C180000000000000000000000000000000000000000000000000000000000000000000000000000030030D860C0000C061B0C180000000000000000000000000000000000000000000000000000000000000000000000000000030030CC60C0000C06198C180000000000000000000000000000000000000000000000000000000000000000000000000000030030CC60FF800C06198C1FF000000000000000000000000000000000000000000000000000000000000000000000000000030030C660FFC00C0618CC1FF800000000000000000000000000000000000000000000000000000000000000000000000000030030C760C0000C0618EC180000000000000000000000000000000000000000000000000000000000000000000000000000030030C360C0000C06186C180000000000000000000000000000000000000000000000000000000000000000000000000000030030C1E0C0000C06183C180000000000000000000000000000000000000000000000000000000000000000000000000000030030C1E0C0000C06183C180000000000000000000000000000000000000000000000000000000000000000000000000000030030C0E0C0000C06181C180000000000000000000000000000000000000000000000000000000000000000000000000000030030C0E0C0000C06181C180000000000000000000000000000000000000000000000000000000000000000000000000000030030C060C0000E0E180C18000000000000000000000000000000000000000000000000000000000000000000000000000003FE30C060FFE007BC180C1FFC0000000000000000000000000000000000000000000000000000000000000000000000000003FE30C020FFE003F818041FFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300308020FFE01FF88040207C00000000000000000000000000000000000000000000000000000000000000000000000000030030C060FFE03FFCC04061FF00000000000000000000000000000000000000000000000000000000000000000000000000030030C060C0000180C0E0618300000000000000000000000000000000000000000000000000000000000000000000000000030030E060C0000180C0E0630180000000000000000000000000000000000000000000000000000000000000000000000000030030F060C000018040E0630180000000000000000000000000000000000000000000000000000000000000000000000000030030F060C000018060E0C30180000000000000000000000000000000000000000000000000000000000000000000000000030030D860C000018061B0C30180000000000000000000000000000000000000000000000000000000000000000000000000030030D860C000018061B0C30180000000000000000000000000000000000000000000000000000000000000000000000000030030CC60C000018021B0830180000000000000000000000000000000000000000000000000000000000000000000000000030030CC60FF8001803111830180000000000000000000000000000000000000000000000000000000000000000000000000030030C660FFC001803319830180000000000000000000000000000000000000000000000000000000000000000000000000030030C760C00001803319830180000000000000000000000000000000000000000000000Line truncated
|
||||
^FO20,280^GFA,4560,4560,38,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000004000000000000000004000000000000000000040000000000000000010000000000000000000400000000006000000400000000000000000004000040000000000080000000000000000000000000000000400000040000000000000000000E000040000000000080000000000000000000000000000000400000040000000000000000000A000040000000000080000000000000000000000000000000400000040000000000000000000A0411F87C071E07C3F103E008004187C0780F040F03C003E1F007C0041F01E0780F80C00000010410408610A10C608104300830460C610C21842184100430400C60042184308210C30000001104104082104108208104100830040821042084208410041040082004208410821042000000110410408210410020810410041084002104208420840004104000200420841080104200000011041040821041002081040004408400210420842084100410400020042084108210420000002084104082104103E081040004480403E104208420841004104003E004208410821FC200000020841040821041042081040000090404210420842082200410400420042084104410020000003F84104082104108208104000281040821042084208600041040082004208410C0100200000020441040821041082081041002840408210420842084000410400820042084108010420000004044104082104108208104100186040821042084208400041040082004208410801042000000404430608610410860C1043001020408610C21842083800430400860042184107010C20000004043C0187C104107803103E00100040781782F0420823003E0400780041F0410460F82000000000000000000000000000000000000000100200000041000000000000000000082000000000000000000000000000000000000000000010020000004100000000000000000008200000000000000000000000000000000000000000001002000000410000000000000000000820000000000000000000000000000000000000000000100200000023000000000000000000046000000000000000000000000000000000000000000000000000000800000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000003C03C01E004000000000000000000200000008000000000000000000000000000000000000006206203103C000000000000000020200000400000010000000400000000001000000000000008108104084400000000000000002020000040000001000000040000000000100000000000000810810408040000000000000000202000004000000100000004000000000010000000000000081081040804000000000F0810F0FC2F03E1F883E007E1F01E1F800F03E03C7E0F80F03E0F80081081040804000000003088121820218430408430010218610400308430861010C2184310C0081081040804000000002088220820208410408410010208410400208410821010420841104008108104080400000000200422082020841040841001020840040020041082101042084110400810810408040000000030042208202084104084000102086004003004108210104208401040081081040804000000001C044208202087F04084000103F83804001C07F082101FC208401FC00810810408040000000003024208202084004084000102000604000304008210100208401000081081040804000000000082020820208400408400010200010400008400821010020840100008108104080400000000208082082020841040841001020841040020841082101042084110400810810408040000000020818208202084104084100102084104002084108210104208411040081081040804000000003081020830208430608430018218610600308430821810C2084310C0043043021804000000001F0102080C2083E01883E00061F03E01801F03E082060F82083E0F8003C03C01E07FC0000000000100000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,7 @@
|
||||
^XA^PW900^LL600^LH0,0^CI28
|
||||
^FO30,30^GFA,4366,4366,74,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E000000000000001C0000E0000700000000000000000000000000000000000000000000000000000000000000000000000000000000000600007FFE03FFF07FFFC000001FFFF03FFF007FC03FFFE0000000FF8007FC003FE0007C00000000000000000000000000000000000000000000000000000000000000000000000000000600007FFE03FFF07FFFC000001FFFF03FFF00FFE03FFFE0000001FFC00FFE007FF000FC0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E0000000003800300001E0F0007000000003C1E01E0F00F07803DC0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E0000000003800300001C07000700000000380E01C0700E038079C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E000000000380030000180300070000000070070380381C01C0F1C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E000000000380030000380300070000000070070380381C01C0C1C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E000000000380030000380000070000000070070380381C01C081C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E000000000380030000180000070000000070070380381C01C001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E0000000003800300001C0000070000000070070380381C01C001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E0000000003800300001E0000070000000070070380381C01C001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000700003000000E0000000003800380000FC000070000000070870384381C21C001C00000000000000000000000000000000000000000000000000000000000000000000000000000600007FFC03FFE000E00000000038003FFE007F800070000000071C7038E381C71C001C00000000000000000000000000000000000000000000000000000000000000000000000000000600007FFC03FFE000E00000000038003FFE000FE00070000000071C7038E381C71C001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003800000E000000000380030000001F00070000000071C7038E381C71C001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E000000000380030000000700070000000070070380381C01C001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E000000000380030000000380070000000070070380381C01C001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E000000000380030000000380070000000070070380381C01C001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E000000000380030000000180070000000070070380381C01C001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E000000000380030000300180070000000070070380381C01C001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E000000000380030000380380070000000070070380381C01C001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E000000000380030000380380070000000070060380301C018001C0000000000000000000000000000000000000000000000000000000000000000000000000000060000600003000000E0000000003800300001C07000700000000380E01C0700E038001C000000000000000000000000000000000000000000000000000000000000000000000000000007FFE07FFE03000000E00000000038003FFF01F0F0007000000001C1C00E0E00707007FFF0000000000000000Line truncated
|
||||
^FO30,103^GFA,4366,4366,74,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E00000000000000000000000000000000000000000000000000000000000000E000070000380000000000000000000000000000000000000000000000000000000000000000000000007FC000000000000000000000000000000000FFFF800000000000000000000007FC003FE001FF0003E0000000000000000000000000000000000000000000000000000000000000000000FFE000000000000070000000000000000000FFFF8000000000000E000000000FFE007FF003FF8007E0000000000000000000000000000000000000000000000000000000000000000001E0700000000000007000000000000000000001C00000000000000E000000001E0F00F0780783C01EE0000000000000000000000000000000000000000000000000000000000000000001C0300000000000007000000000000000000001C00000000000000E000000001C0700E0380701C03CE000000000000000000000000000000000000000000000000000000000000000000180380000000000007000000000000000000001C00000000000000E00000000380381C01C0E00E078E000000000000000000000000000000000000000000000000000000000000000000180380000000000007000000000000000000001C00000000000000E00000000380381C01C0E00E060E0000000000000000000000000000000000000000000000000000000000000000001800001FC0067F00FFFF01CFE001FC000000001C0003F8003FE01FFFE000000380381C01C0E00E040E0000000000000000000000000000000000000000000000000000000000000000001800007FF006FF80FFFF01DFF007FF000000001C000FFE007FF01FFFE000000380381C01C0E00E000E000000000000000000000000000000000000000000000000000000000000000000180000F0780683C0070001D0700F07800000001C001E0F00E03800E00000000380381C01C0E00E000E000000000000000000000000000000000000000000000000000000000000000000180000E0380701C0070001E0380E03800000001C001C0700C03800E00000000380381C01C0E00E000E000000000000000000000000000000000000000000000000000000000000000000180000C0180600C0070001C0380C01800000001C00180300C00000E00000000384381C21C0E10E000E000000000000000000000000000000000000000000000000000000000000000000180001C01C0600E0070001C0181C01C00000001C00380380C00000E0000000038E381C71C0E38E000E000000000000000000000000000000000000000000000000000000000000000000180001C01C0600E0070001C0181C01C00000001C00380380E00000E0000000038E381C71C0E38E000E000000000000000000000000000000000000000000000000000000000000000000180001C01C0600E0070001C0181C01C00000001C00380380F00000E0000000038E381C71C0E38E000E000000000000000000000000000000000000000000000000000000000000000000180001FFFC0600E0070001C0001FFFC00000001C003FFF807FE000E00000000380381C01C0E00E000E000000000000000000000000000000000000000000000000000000000000000000180001FFFC0600E0070001C0001FFFC00000001C003FFF803FF000E00000000380381C01C0E00E000E000000000000000000000000000000000000000000000000000000000000000000180001C0000600E0070001C0001C00000000001C0038000000F800E00000000380381C01C0E00E000E000000000000000000000000000000000000000000000000000000000000000000180001C0000600E0070001C0001C00000000001C00380000003800E00000000380381C01C0E00E000E000000000000000000000000000000000000000000000000000000000000000000180381C0000600E0070001C0001C00000000001C00380000001C00E00000000380381C01C0E00E000E000000000000000000000000000000000000000000000000000000000000000000180381C0000600E0070001C0001C00000000001C00380000001C00E00000000380381C01C0E00E000E0000000000000000000000000000000000000000000000000000000000000000001C0380C0180600E0030001C0000C01800000001C00180301C01C00600000000380301C0180E00C000E0000000000000000000000000000000000000000000000000000000000000000001C0700E0380600E0038001C0000E03800000001C001C0700E038007000000001C0700E0380701C000E0000000000000000000000000000000000000000000000000000000000000000000F0F0070780600E003FF01C0000707800000001C000E0F00F078007FLine truncated
|
||||
^FO30,177^GFA,4366,4366,74,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000080000400002000000000000000000000000000000000000000000000000000000000000000000000000000001FF800FFF801FF00300607FFFC000001FFFF03FFF007F803FFFE0000000FF8007FC003FE0007C000000000000000000000000000000000000000000000000000000000000000000000001FFE00FFF803FF80300607FFFC000001FFFF03FFF00FFE03FFFE0000001F7C00FBE007DF000FC0000000000000000000000000000000000000000000000000000000000000000000000018070007000781C03006000E0000000003800300001C0E000700000000380E01C0700E03803DC0000000000000000000000000000000000000000000000000000000000000000000000018038007000700C03006000E0000000003800300001C0700070000000030060180300C018079C0000000000000000000000000000000000000000000000000000000000000000000000018038007000600E03006000E000000000380030000180300070000000070070380381C01C061C0000000000000000000000000000000000000000000000000000000000000000000000018018007000600E03006000E000000000380030000180000070000000070070380381C01C041C0000000000000000000000000000000000000000000000000000000000000000000000018018007000E00003006000E000000000380030000180000070000000060030300181800C001C0000000000000000000000000000000000000000000000000000000000000000000000018018007000E00003006000E000000000380030000180000070000000060030300181800C001C0000000000000000000000000000000000000000000000000000000000000000000000018018007000E00003006000E0000000003800300001C0000070000000060030300181800C001C0000000000000000000000000000000000000000000000000000000000000000000000018038007000E00003006000E0000000003800300000E0000070000000060030300181800C001C0000000000000000000000000000000000000000000000000000000000000000000000018070007000E00003006000E0000000003800380000FC000070000000060030300181800C001C00000000000000000000000000000000000000000000000000000000000000000000000181F0007000E00003FFE000E00000000038003FFE003F800070000000061C3030E181870C001C000000000000000000000000000000000000000000000000000000000000000000000001FFE0007000E1FE03FFE000E00000000038003FFE000FE00070000000061C3030E181870C001C000000000000000000000000000000000000000000000000000000000000000000000001FF80007000E1FE03006000E000000000380030000000F00070000000061C3030E181870C001C0000000000000000000000000000000000000000000000000000000000000000000000018380007000E00E03006000E000000000380030000000700070000000060030300181800C001C0000000000000000000000000000000000000000000000000000000000000000000000018180007000E00E03006000E000000000380030000000380070000000060030300181800C001C00000000000000000000000000000000000000000000000000000000000000000000000181C0007000E00E03006000E000000000380030000000180070000000060030300181800C001C00000000000000000000000000000000000000000000000000000000000000000000000180C0007000E00E03006000E000000000380030000000180070000000060030300181800C001C00000000000000000000000000000000000000000000000000000000000000000000000180E0007000E00E03006000E000000000380030000300180070000000070070380381C01C001C00000000000000000000000000000000000000000000000000000000000000000000000180E0007000600E03006000E000000000380030000380180070000000070070380381C01C001C0000000000000000000000000000000000000000000000000000000000000000000000018070007000600C03006000E000000000380030000380380070000000030060180300C018001C0000000000000000000000000000000000000000000000000000000000000000000000018070007000701C03006000E0000000003800300001C07000700000000380E01C0700E038001C000000000000000000000000000000000000000000000000000000000000000000000001803800F80038380300Line truncated
|
||||
^FO30,251^GFA,10952,10952,74,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000E0600180FFFF00001FE00600181FFFE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E06001C0FFFF80007FF006001C1FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07001C0FFFF0000F8F807001C1FFFE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07801C0E0000000E01C07801C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07801C0E0000001C00E07801C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07C01C0E0000001C00E07C01C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07C01C0E0000001C00E07C01C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07E01C0E0000001C00E07E01C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07E01C0E0000001C00E07E01C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07701C0E0000001C00E07701C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07781C0E0000001C00E07781C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07381C0E0000001C00E07381C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E071C1C0E0000001C00E071C1C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E071C1C0FFFC0001C00E071C1C1FFF800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E070E1C0FFFC0001C00E070E1C1FFF800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E070E1C0FFFC0001C00E070E1C1FFF800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07071C0E0000001C00E07071C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07079C0E0000001C00E07079C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E07039C0E0000001C00E07039C1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E0701DC0E0000001C00E0701DC1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E0701DC0E0000001C00E0701DC1C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000E0700FC0E0000001C00E0700FC1C00000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO30,414^GFA,9912,9912,56,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000C000000000000000000000000000C0000000000000001E000000003000000000000000000000000000001800000000000000000000000000C000000000000000000000000000C000000000000000300000000030000000000000000000000000000018000000C00000000000000006000000000000000000000000000000000000000000000060000000003000000000000000000000000000001C000000C00000000000000006000000000000000000000000000000000000000000000040000000003000000000000000000000000000003C000000C000000000000000060000000000000000000000000000000000000000000000400000000030000000000000000000000000000034000000C000000000000000060000000000000000000000000000000000000000000000400000000030000000000000000000000000000024000000C0018000804000C00600000C0000000000080600020002000004000C00000C006000030000300300020006000600020000000000660300C7FC0FF027E3F807F83FE0C07F8003008022783FC09FC09FC0C13F807F20007F83FC001FE000301FE09FC03F903FC09E0000000000620300C0C0183838361C0E1C0600C0C1C003008063C070E0E0E0E0E0C1C1C0C0E000C1C06000387000303070E0E0607060E0F00000000000420300C0C01018301C0C0C0C0600C080C00101C043806060C060C060C180C080600080C04000303000302030C06040304060E00000000000430300C0C0300830180408040600C180400101C043004020C020C020C1804180600180404000201000306010C020C030C020C00000000000C30300C0C0300C30080400060600C18060018140C3000030C030C030C1806180600180604000001800306018C030C030C030C00000000000C10300C0C0300C30080400060600C1800000836083000030C030C030C1806180600180604000001800306018C030C030C030C00000000000818300C0C0300C30080400060600C1800000822083000030C030C030C1806180600180604000001800306018C030C030C030C00000000001818300C0C0300C30080403FE0600C1800000C22183001FF0C030C030C18060C04001806040000FF800306018C0306020FFF0C00000000001808300C0C0300C30080406060600C1800000463103003030C030C030C18060E0C00180604000181800306018C0307060C000C00000000001FF8300C0C0300C3008040C060600C1800000441103006030C030C030C180607F800180604000301800306018C0303FC0C000C00000000001FFC300C0C0300C30080408060600C1800000641303004030C030C030C18060E0000180604000201800306018C0307000C000C0000000000300C300C0C0300C30080418060600C18000002C1A0300C030C030C030C1806080000180604000601800306018C0304000C000C00000000003004300C0C0300830080418060600C1804000280A0300C030C020C020C1806080000180404000601800306010C0304000C020C00000000002006100C0C0100830080408060600C0804000380E03004030C020C020C1806080000080404000201800302010C03040004020C00000000006006181C06018183008040C0E0300C0C0C000180C03006070E060E060C18060C00000C0C04000303800303030C03060006060C000000000060060E6C07C0E70300804073603E0C07380001804030039B0F9C0F9C0C180607F8000738040001CD800301CE0C0303FC039C0C0000000000400207C401C07E030080403E200E0C03F0000100403001F10CF80CF80C1806060C0003F0040000F8800300FC0C03030601F80C00000000000000000000000000000000000000000000000000000000000C000C000000000C0400000000000000000000000000060200000000000000000000000000000000000000000000000000000000000000000C000C000000000C0600000000000000000000000000060300000000000000000000000000000000000000000000000000000000000000000C000C000000000C0600000000000000000000000000060300000000000000000000000000000000000000000000000000000000000000000C000C000000000C0400000000000000000000000000060200000000000000000000000000000000000000000000000000000000000000000C000C00000000060C00000000000000000000000000030600000000000000000000000000000000000000000000000000000000000000000C000C0000000007F80000000000000000000000000003FC00000000000000000000000000000000000000000000000000000000000000000C000C0000000001E00000000000000000000000000000F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,7 @@
|
||||
^XA^PW1800^LL1200^LH0,0^CI28
|
||||
^FO59,59^GFA,17464,17464,148,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO59,207^GFA,17464,17464,148,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO59,355^GFA,17464,17464,148,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO59,502^GFA,43808,43808,148,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO59,828^GFA,39405,39405,111,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C000000000000000000000000000000000000000000000000000001E00000000000000000000000000000000000000000000000000000001E000000000000000000000000000000003FC00000000000000000780000000000000000000000000000000000000000000000000000001C000000000000000000000000000000000000000000000000000001E0000000000000000000000000Line truncated
|
||||
^XZ
|
||||
@@ -0,0 +1,8 @@
|
||||
^XA^PW609^LL406^LH0,0^CI28
|
||||
^FO20,20^GFA,1000,1000,25,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FF1810FE038200003E00000000000000000000000000000000701810C7038200006300000000000000000000000000000000201810C183820000C180000000000000000000000000000000201810C082C20000C080000000000000000000000000000000201810C0834200008080000000000000000000000000000000201810C0834200008080000000000000000000000000000000201810C1836200008080000000000000000000000000000000201810C3032200008C80000000000000000000000000000000201810FE032200008880000000000000000000000000000000201810C6031200008080000000000000000000000000000000201810C2031200008080000000000000000000000000000000201810C3031200008080000000000000000000000000000000201830C3030A0000C080000000000000000000000000000000200830C1830E0000C180000000000000000000000000000000200C60C1830E000063000000000000000000000000000000002007C0C0830600003E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO240,20^GFA,1000,1000,5,00000000000000000080000000008000000000800000000080000000018000007FFF800000000180000000008000000000800000000080000000008000000000000000000000000000000000000FFF8000003FFF8000006000000000400000000040000000004000000000600000000038000000001FFF80000000000000000000000000000000000000000000007FFF8000007FFF80000000808000000080800000008080000001818000000FC18000003C63000000703E000000000000000000000000000000000000000000000000000000007FFF8000007FFB8000000007800000003C00000000E00000000700000000380000000070000000007FFF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007E00000000C30000000081800000608080000070008000001C80800000078180000001C3000000007E00000000000000000000000000000000000000000000001FFE00000038070000006001800000400080000040C08000004040800000600180000030030000001FFE0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO20,80^GFA,1000,1000,25,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001F00F83FF000060C10303E004000000000000000000000000031818C1FF000070C183063004000000000000000000000000060C306020000070C1830C1004000000000000000000000000040C202020000050C0C30C18040000000000000000000000000404202020000048C0C30818040000000000000000000000000404202020000048C0430818040000000000000000000000000404306020000048C063081804000000000000000000000000044418C020000044C07F08180400000000000000000000000004C40F8020000044C0C3081804000000000000000000000000040418C020000046C1830818040000000000000000000000000404304020000042C1030818040000000000000000000000000404206020000042C103081804000000000000000000000000040C2060210000434103081804000000000000000000000000060C306026000041C183081804000000000000000000000000031818C03C000041C0E308180E00000000000000000000000001F00F8038000041C07F0818FFE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO300,20^GFA,1000,1000,5,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FF8000000C00C00000180060000010202000001030200000100020000018006000000E01C0000007FF80000000000000000000000000000000000018000000001F000000001BC00000001078000000101E0000001003C000001000E00000100000000018000000001E00000000000000000000000000000000000000000000000007C06000000CE060000018306000001008600000100660000010036000001801E000000E00E000000600600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001FFFE000000000E000000001C00000000E000000007000000003C00000001E000000001DFFE000001FFFE000000000000000000000000000000000000000000000000000000007C0E000000C63C00000183F00000018180000001010000000101000000010100000001FFFE000001FFFE0000000000000000000000000000000000000000000001FFF8000000001C00000000060000000002000000000200000000020000000006000001FFFC000001FFF000000000000000000000000000000000000100000000010000000001000000000100000000018000000001FFFE0000018000000001000000000100000000010000000001000000000000000000^FS
|
||||
^FO20,240^GFA,1000,1000,25,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F807C06003F000003E01F00F801C0000000000000000000003FC0FE06003FC00007F03F81FC03C00000000000000000000030E1C7060030E0000E3871C38E0FC00000000000000000000030618306003060000C1860C3060CC00000000000000000000030618306003060000C1860C30608C00000000000000000000030618306003060000C1860C30600C00000000000000000000030C18306003060000C1860C30600C0000000000000000000003F818306003060000CD866C33600C0000000000000000000003BE18306003060000CD866C33600C00000000000000000000030618306003060000C1860C30600C00000000000000000000030718306003060000C1860C30600C00000000000000000000030318306003060000C1860C30600C00000000000000000000030718306003060000C1860C30600C00000000000000000000030E1C7060030E0000E3871C38E00E0000000000000000000003FE0FE07FC3FC00007F03F81FC0FFC000000000000000000003F807C07FC3F000003E01F00F80FFC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO20,300^GFA,1000,1000,25,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0FFC06004007F80F000003C00F007801C0000000000000001800C00E00C000C039C0000C7031C18E0780000000000000001800800A00C000C020C000083020C1060C80000000000000001000800B00C0008060400018106043021880000000000000001000801B008000806000001010404202018000000000000000100080110080008040000010104042020180000000000000003001803100800180400000103040C20601800000000000000030018021008001804000003330CCC66601000000000000000030018021018001804000003320CC86640100000000000000002001006101800100C0000020208084040100000000000000002001007F01000100C000002020808404010000000000000000200100C10100010080000020208084040300000000000000006003008101000300818000206081840C0300000000000000006003018181000300C100003040C10608020000000000000003FC03018183FE1FE0E7000039C0E707383FE000000000000003FC02010183FE1FE03C00001F007C03E07FE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,8 @@
|
||||
^XA^PW900^LL600^LH0,0^CI28
|
||||
^FO30,30^GFA,2183,2183,37,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFC1C0381FF803C0700000003F00000000000000000000000000000000000000000000003FFFC1C0381FFE03C070000000FFC00000000000000000000000000000000000000000000000E001C0381C0F03E070000001C1E000000000000000000000000000000000000000000000006001C0381C0383E07000000180E000000000000000000000000000000000000000000000006001C0381C03836070000003807000000000000000000000000000000000000000000000006001C0381C01833070000003007000000000000000000000000000000000000000000000006001C0381C01833070000003003000000000000000000000000000000000000000000000006001C0381C01833070000003003000000000000000000000000000000000000000000000006001C0381C01839870000003003000000000000000000000000000000000000000000000006001C0381C03839870000003003000000000000000000000000000000000000000000000006001C0381C070398700000030C3000000000000000000000000000000000000000000000006001C0381FFF038C700000031E3000000000000000000000000000000000000000000000006001C0381FFC038C700000031C3000000000000000000000000000000000000000000000006001C0381C38038C70000003003000000000000000000000000000000000000000000000006001C0381C18038670000003003000000000000000000000000000000000000000000000006001C0381C1C038670000003003000000000000000000000000000000000000000000000006001C0381C0C038770000003003000000000000000000000000000000000000000000000006001C0381C0E038370000003003000000000000000000000000000000000000000000000006001C0301C0E038370000003007000000000000000000000000000000000000000000000006000C0301C070381F0000003807000000000000000000000000000000000000000000000006000E0701C070381F000000180E000000000000000000000000000000000000000000000006000F0E01C038381F0000001E1E0000000000000000000000000000000000000000000000060007FE01C038380F0000000FFC0000000000000000000000000000000000000000000000060001F801C018380F00000003F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO355,30^GFA,2368,2368,8,0000000000000000000000000000000000000000000180000000000000018000000000000001800000000000000180000000000000018000000000000001800000000000000380000000007FFFFF80000000007FFFFF800000000000000180000000000000018000000000000001800000000000000180000000000000018000000000000001800000000000000180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFF80000000001FFFFF80000000003FFFFF8000000000380000000000000070000000000000006000000000000000600000000000000060000000000000006000000000000000700000000000000038000000000000003FFFFF80000000000FFFFF800000000001FFFF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFF80000000007FFFFF80000000007FFFFF8000000000000C018000000000000C018000000000000C018000000000000C018000000000001C018000000000007C01800000000003FC0380000000000FCE0300000000003F070F00000000007C07FE00000000007001FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFF80000000007FFFFF80000000007FFF87800000000000000F800000000000007E00000000000003F00000000000001F80000000000000FC00000000000003E00000000000001F800000000000007C000000000000007FFFFF80000000007FFFFF80000000007FFFFF8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000007FC0000000000000FFE0000000000001E0F0000000000001C030000000000401803800000000070100180000000007C100180000000001F100180000000000F9801800000000003F803800000000000FC030000000000003E0F0000000000000FFE00000000000003F8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFF800000000001FFFFE00000000003C000F000000000030000300000000007000018000000000600C018000000000600E018000000000600E0180000000006004018000000000700003800000000038000700000000003E001F00000000001FFFFE000000000007FFF800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO30,118^GFA,2183,2183,37,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC000FC01FFFC000000F01C1803801F8000600000000000000000000000000000000000003FF003FF01FFFC000000F01C1C03807FE0006000000000000000000000000000000000000078780787800F00000000F81C1C038070F0006000000000000000000000000000000000000070180E01C00600000000F81C0E0380E0700060000000000000000000000000000000000000E01C0E00C00600000000F81C0E0380C0300060000000000000000000000000000000000000E00C0C00C00600000000EC1C070380C0380060000000000000000000000000000000000000C00C0C00E00600000000EC1C070381C0380060000000000000000000000000000000000000C00C0C00C00600000000EE1C030381C0380060000000000000000000000000000000000000C00C0C00C00600000000E61C038381C0380060000000000000000000000000000000000000C00C0E01C00600000000E61C018381C0380060000000000000000000000000000000000000C00C0703800600000000E31C01C381C0380060000000000000000000000000000000000000C38C03CF000600000000E31C03FF81C0380060000000000000000000000000000000000000C78C00FC000600000000E31C0FFF81C0380060000000000000000000000000000000000000C30C01FE000600000000E19C0E0381C0380060000000000000000000000000000000000000C00C0303800600000000E19C1C0381C0380060000000000000000000000000000000000000C00C0601800600000000E19C180381C0380060000000000000000000000000000000000000C00C0601C00600000000E0CC180381C0380060000000000000000000000000000000000000C00C0E01C00604000000E0CC180381C0380060000000000000000000000000000000000000E00C0E01C0060C000000E0CC180381C0380060000000000000000000000000000000000000E01C0601C0061C000000E06C1C0381C038006000000000000000000000000000000000000070180701800678000000E07C1C0381C0380060000000000000000000000000000000000000783807878007F0000000E07C0F0381C03800700000000000000000000000000000000000003FF003FF0007C0000000E03C07FF81C0383FFFC000000000000000000000000000000000000FC000FC000780000000E03C01FF81C0383FFFC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO443,30^GFA,2368,2368,8,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFC00000000000FFFFF00000000001F000F80000000001C00038000000000380001C000000000300400C000000000300E00C000000000300E00C000000000300600C000000000300001C00000000018000180000000001E000780000000000FFFFF000000000003FFFC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038000000000000003F000000000000003FC000000000000033F8000000000000307E000000000000301FC000000000003003F000000000003000FE000000000030001F8000000000300007C000000000300000C000000000300000000000000038000000000000003F000000000000003F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E000C0000000000FF800C0000000001FFC00C0000000001C0F00C000000000380780C0000000003003C0C0000000003001E0C000000000300070C000000000300038C00000000038001CC00000000018000FC0000000001E0007C0000000000F0003C000000000070001C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFC0000000003FFFFFC0000000003FFFFFC000000000000007C00000000000003F00000000000000F800000000000007E00000000000003F00000000000001F80000000000000FC00000000000003E000000000000003C3FFFC0000000003FFFFFC0000000003FFFFFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007F001C0000000000FFC07C0000000001E1C1F8000000000180E7E00000000003807F800000000003007C00000000000300700000000000030060000000000003006000000000000300600000000000030060000000000003FFFFFC0000000003FFFFFC0000000003FFFFFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFF000000000003FFFFE00000000003FFFFF80000000000000038000000000000001C000000000000000C000000000000000C000000000000000C000000000000000C000000000000001C00000000000000380000000003FFFFF80000000003FFFFF00000000003FFFF800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000003000000000000000300000000000000030000000000000003000000000000000300000000000000030000000000000003FFFFFC0000000003FFFFFC0000000003800000000000000300000000000000030000000000000003000000000000000300000000000000030000000000000003000000000000000000000000000000000000000000000^FS
|
||||
^FO30,355^GFA,2183,2183,37,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001FF8001F800F0003FE000000003F0003F0003F0003E00000000000000000000000000000001FFE007FE00F0003FF80000000FFC00FFC00FFC00FE00000000000000000000000000000001FFF00FFF00F0003FFE0000001FFE01FFE01FFE01FE00000000000000000000000000000001C0F81F0F00F0003C3E0000003E1F03E1F03E1F03FE00000000000000000000000000000001C0781E0780F000380F0000003C0F03C0F03C0F07DE00000000000000000000000000000001C0781C0780F000380F00000038070380703807071E00000000000000000000000000000001C0381C0380F000380700000038070380703807061E00000000000000000000000000000001C0381C0380F000380700000038070380703807041E00000000000000000000000000000001C0781C0380F000380700000038070380703807001E00000000000000000000000000000001C0F01C0380F000380700000038070380703807001E00000000000000000000000000000001FFE01C0380F000380700000038C7038C7038C7001E00000000000000000000000000000001FFC01C0380F000380700000039E7039E7039E7001E00000000000000000000000000000001FFF01C0380F000380700000039E7039E7039E7001E00000000000000000000000000000001C0F81C0380F000380700000038C7038C7038C7001E00000000000000000000000000000001C0781C0380F000380700000038070380703807001E00000000000000000000000000000001C03C1C0380F000380700000038070380703807001E00000000000000000000000000000001C03C1C0380F000380700000038070380703807001E00000000000000000000000000000001C03C1C0380F000380700000038070380703807001E00000000000000000000000000000001C03C1C0780F000380F00000038070380703807001E00000000000000000000000000000001C0781E0780F000380F0000003C0F03C0F03C0F001E00000000000000000000000000000001C0F81F0F00F0003C7E0000003E1F03E1F03E1F001E00000000000000000000000000000001FFF00FFF00FFFC3FFC0000001FFE01FFE01FFE07FFF0000000000000000000000000000001FFE007FE00FFFC3FF80000000FFC00FFC00FFC07FFF0000000000000000000000000000001FF0001F800FFFC3FE000000003F0003F0003F007FFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^FO30,443^GFA,2183,2183,37,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFC0FFFF003C00300007FF800FE00000000FC001F8001F8000F00000000000000000000003FFC0FFFF003C00300007FF803FF00000003FF007FE007FE001F0000000000000000000000038000380007C003000007000787800000070780E0F00E0F007F0000000000000000000000038000180006C0070000070007038000000E0381C0701C0700F30000000000000000000000038000380006C007000007000E018000000C01818030180301C7000000000000000000000003800038000EE006000007000C018000001C0183803038030187000000000000000000000003000030000CE006000006000C000000001C0183803038030007000000000000000000000003000030001C6006000006001C0000000018018300303003000600000000000000000000000300003000186006000006001C000000001801830030300300060000000000000000000000030000300018600E000006001C000000001803830070300700060000000000000000000000070000700038600E00000E00180000000018438308703087000E0000000000000000000000070000700030600E00000E00180000000038E3071C6071C6000E0000000000000000000000070000600070600C00000E00180000000038E3071C6071C6000E0000000000000000000000060000600060600C00000C00180000000030030600606006000C00000000000000000000000600006000E0600C00000C00380000000030030600606006000C00000000000000000000000600006000FFF01C00000C00380000000030070600E0600E000C00000000000000000000000E0000E000FFF01C00001C00300000000030070600E0600E000C00000000000000000000000E0000E001C0701C00001C00300000000030060600C0600C001C00000000000000000000000E0000E00180301800001C00300600000070060E00C0E00C001C00000000000000000000000C0000C00380301800001800300E000000700E0E01C0E01C001800000000000000000000000C0000C00300301800001800380C000000380C0701807018001800000000000000000000001E0000C00300301800003C003C3C0000003C3C0787807878003C0000000000000000000001FFE001C00700303FFF03FFC01FF80000001FF803FF003FF00FFFC000000000000000000003FFE001C00600303FFE07FFC007E00000000FE001FC001FC00FFFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000^FS
|
||||
^XZ
|
||||
@@ -0,0 +1,8 @@
|
||||
^XA^PW1800^LL1200^LH0,0^CI28
|
||||
^FO59,59^GFA,8732,8732,74,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFE007C0001F000FFFFE00001FE0007C00000000000000FFF8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFE007C0001F000FFFFFC0001FE0007C00000000000003FFFE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFE007C0001F000FFFFFF0001FE0007C00000000000007FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFE007C0001F000FFFFFF8001FF0007C0000000000000FFFFF800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFE007C0001F000FFFFFFC001FF0007C0000000000001FC01FC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C000007C0001F000FC001FC001FF0007C0000000000003F800FE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C000007C0001F000FC000FE001FF8007C0000000000003F0007E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C000007C0001F000FC0007E001F78007C0000000000007E0003F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C000007C0001F000FC0003F001F7C007C0000000000007E0003F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C000007C0001F000FC0003F001F7C007C0000000000007C0001F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C000007C0001F000FC0001F001F3C007C0000000000007C0001F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C000007C0001F000FC0001F001F3E007C0000000000007C0001F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C000007C0001F000FC0001F001F3E007C0000000000007C0001F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C000007C0001F000FC0001F001F1E007C000000000000FC0001F80000000000000000000000000000000Line truncated
|
||||
^FO709,59^GFA,8865,8865,15,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000007C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFC00000000000000000007FFFFFFFFFC0000000000000000000FFFFFFFFFFC0000000000000000003FFFFFFFFFFC0000000000000000007FFFFFFFFFFC0000000000000000007FE000000000000000000000000000FE0000000000000000000000000000FC0000000000000000000000000001F80000000000000000000000000001F00000000000000000000000000001F00000000000000000000000000001E00000000000000000000000000001E00000000000000000000000000001E00000000000000000000000000001E00000000000000000000000000001E00000000000000000000000000001F00000000000000000000000000001F00000000000000000000000000001F80000000000000000000000000000FC0000000000000000000000000000FE00000000000000000000000000007FE0000000000000000000000000007FFFFFFFFFFC0000000000000000003FFFFFFFFFFC0000000000000000001FFFFFFFFFFC00000000000000000007FFFFFFFFFC00000000000000000000FFFFFFFFFC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC00000000000000000000001F00007C00000000000000000000001F00007C00000000000000000000001F00007C00000000000000000000001F00007C00000000000000000000001F00007C00000000000000000000001F00007C00000000000000000000001F00007C00000000000000000000001F00007C00000000000000000000003F00007C0000000000000000000000FF00007C0000000000000000000003FF00007C000000000000000000000FFF80007C000000000000000000007FFF80007C00000000000000000001FFFFC000F800000000000000000007FF8FC001F80000000000000000001FFE07F003F80000000000000000007FF807FC0FF0000000000000000001FFE003FFFFF0000000000000000001FF8001FFFFE0000000000000000001FE0000FFFFC0000000000000000001F800007FFF00000000000000000001C000001FFC00000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC0000000000000000000000000001FC000000000000000000000000000FFC000000000000000000000000007FFC00000000000000000000000003FFE00000000000000000000000000FFF000000000000000000000000007FFC00000000000000000000000003FFE00000000000000000000000001FFF00000000000000000000000000FFF800000000000000000000000007FFC00000000000000000000000001FFF00000000000000000000000000FFF800000000000000000000000007FFC00000000000000000000000003FFE00000000000000000000000001FFF000000000000000000000000001FFC000000000000000000000000001FE0000000000000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000001FFFFFFFFFFFC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO59,236^GFA,8732,8732,74,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO887,59^GFA,8865,8865,15,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
|
||||
^FO59,709^GFA,8732,8732,74,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001FC0000000000000000000000000000000000001FC00000003F800000007F0000000000000000000000000000000000000000000000000000000000000000000000000007FFFF8000000FFF800003FC0000003FFFF80000000000000000FFF8000001FFF0000003FFE0000001FFC00000000000000000000000000000000000000000000000000000000000000007FFFFF000003FFFE00003FC0000003FFFFF0000000000000003FFFE000007FFFC00000FFFF8000003FFC00000000000000000000000000000000000000000000000000000000000000007FFFFF80000FFFFF80003FC0000003FFFFFC00000000000000FFFFF80001FFFFF00003FFFFE000007FFC00000000000000000000000000000000000000000000000000000000000000007FFFFFE0001FFFFFC0003FC0000003FFFFFE00000000000001FFFFFC0003FFFFF80007FFFFF00001FFFC00000000000000000000000000000000000000000000000000000000000000007FFFFFF0001FFFFFC0003FC0000003FFFFFF00000000000003FFFFFE0007FFFFFC000FFFFFF80003FFFC00000000000000000000000000000000000000000000000000000000000000007FFFFFF0003FFFFFE0003FC0000003FFFFFF80000000000003FFFFFE0007FFFFFC000FFFFFF8000FFFFC00000000000000000000000000000000000000000000000000000000000000007F803FF8007FE03FF0003FC0000003FFFFFF80000000000007FE03FF000FFC07FE001FF80FFC001FFFFC00000000000000000000000000000000000000000000000000000000000000007F800FFC007FC01FF0003FC0000003FC00FFC0000000000007F800FF000FF001FE001FE003FC003FFBFC00000000000000000000000000000000000000000000000000000000000000007F8007FC007F800FF0003FC0000003FC007FC000000000000FF0007F801FE000FF003FC001FE003FF3FC00000000000000000000000000000000000000000000000000000000000000007F8003FC00FF0007F8003FC0000003FC003FE000000000000FF0007F801FE000FF003FC001FE003FE3FC00000000000000000000000000000000000000000000000000000000000000007F8003FC00FF0007F8003FC0000003FC001FE000000000000FE0003F801FC0007F003F8000FE003F83FC00000000000000000000000000000000000000000000000000000000000000007F8001FC00FF0007F8003FC0000003FC001FE000000000000FE0003F801FC0007F003F8000FE003F03FC00000000000000000000000000000000000000000000000000000000000000007F8001FC00FF0007F8003FC0000003FC000FE000000000000FE0003F801FC0007F003F8000FE003C03FC00000000000000000000000000000000000000000000000000000000000000007F8001FC00FF0007F8003FC0000003FC000FE000000000000FE0003F801FC0007F003F8000FE003803FC000Line truncated
|
||||
^FO59,887^GFA,8732,8732,74,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FE000000000000000003F800000007F00000000FE00000000000000000000000000000000000000000000000000000000FFFFFF001FFFFFFFE00003FC000003F00000000FFFFFF000007FFC0000000000000003FFF0000007FFE000000FFFC0000003FE0000000000000000000000000000000000000000000001FFFFFF001FFFFFFFE00003FC000003E00000001FFFFFF00001FFFF000000000000000FFFF800001FFFF000003FFFE0000007FE0000000000000000000000000000000000000000000001FFFFFF001FFFFFFFC00007FC000003E00000001FFFFFF00007FFFF800000000000001FFFFE00003FFFFC00007FFFF800001FFC0000000000000000000000000000000000000000000001FFFFFF001FFFFFFFC00007FC000003E00000001FFFFFF0000FFFFFC00000000000003FFFFE00007FFFFC0000FFFFF800003FFC0000000000000000000000000000000000000000000001FFFFFF001FFFFFFFC0000FFC000003E00000001FFFFFF0001FE03FC00000000000007F00FF0000FE01FE0001FC03FC0000FFFC0000000000000000000000000000000000000000000000007C00000000F80000000FBC000007E00000000007C000001F800FE0000000000000FE003F0001FC007E0003F800FC0001FE7C000000000000000000000000000000000000000000000000FC00000001F80000000FBE000007E0000000000FC000003F0007E0000000000001F8001F8003F0003F0007E0007E0007FC7C000000000000000000000000000000000000000000000000FC00000001F80000001F3E000007C0000000000FC000007E0007E0000000000001F0001F8003E0003F0007C0007E000FF0FC000000000000000000000000000000000000000000000000F800000001F00000001F3E000007C0000000000F8000007E0003E0000000000003F0000F8007E0001F000FC0003E001FE0FC000000000000000000000000000000000000000000000000F800000001F00000003E3E000007C0000000000F8000007C0003E0000000000003E0000F8007C0001F000F80003E001F80F8000000000000000000000000000000000000000000000000F800000001F00000003E3E000007C0000000000F800000FC0003E0000000000003E0000F8007C0001F000F80003E001F00F8000000000000000000000000000000000000000000000000F800000001F00000003E3E000007C0000000000F800000F80003E0000000000007C0000F800F80001F001F00003E001C00F8000000000000000000000000000000000000000000000001F800000003F00000007C3E00000FC0000000001F800000F8000000000000000007C0000F800F80001F001F00003E001800F8000000000000000000000000000000000000000000000001F800000003F00000007C3E00000F80000000001F800000F8000000000000000007C0000F800F80001F0Line truncated
|
||||
^XZ
|
||||
Loaded 100 of 111 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user