mirror of
https://github.com/google/nomulus.git
synced 2025-04-30 12:07:51 +02:00
Update currently-active ICANN-provided SMD test file (#1753)
The test files they provided before have expired, and they only provide one valid currently-active test file now, so only test that one. The test files are located at https://newgtlds.icann.org/en/about/trademark-clearinghouse/registries-registrars
This commit is contained in:
parent
7b7c1e1ddc
commit
280b56bd51
2 changed files with 121 additions and 21 deletions
|
@ -14,20 +14,16 @@
|
||||||
|
|
||||||
package google.registry.tmch;
|
package google.registry.tmch;
|
||||||
|
|
||||||
import static google.registry.testing.TestDataHelper.listFiles;
|
import static google.registry.testing.TestDataHelper.loadFile;
|
||||||
import static org.joda.time.DateTimeZone.UTC;
|
import static org.joda.time.DateTimeZone.UTC;
|
||||||
|
|
||||||
import com.google.common.flogger.FluentLogger;
|
|
||||||
import google.registry.config.RegistryConfig.ConfigModule.TmchCaMode;
|
import google.registry.config.RegistryConfig.ConfigModule.TmchCaMode;
|
||||||
import google.registry.flows.EppException;
|
import google.registry.flows.EppException;
|
||||||
import google.registry.flows.domain.DomainFlowTmchUtils;
|
import google.registry.flows.domain.DomainFlowTmchUtils;
|
||||||
import google.registry.model.smd.EncodedSignedMark;
|
import google.registry.model.smd.EncodedSignedMark;
|
||||||
import google.registry.testing.AppEngineExtension;
|
import google.registry.testing.AppEngineExtension;
|
||||||
import google.registry.util.ResourceUtils;
|
|
||||||
import google.registry.util.SystemClock;
|
import google.registry.util.SystemClock;
|
||||||
import java.nio.file.Path;
|
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||||
|
|
||||||
|
@ -37,9 +33,17 @@ class TmchTestDataExpirationTest {
|
||||||
@RegisterExtension
|
@RegisterExtension
|
||||||
public final AppEngineExtension appEngine = AppEngineExtension.builder().withCloudSql().build();
|
public final AppEngineExtension appEngine = AppEngineExtension.builder().withCloudSql().build();
|
||||||
|
|
||||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
/**
|
||||||
|
* Verifies the currently-active signed mark file provided by ICANN.
|
||||||
@Disabled("TODO(b/243130376): update the data files when ICANN provides them")
|
*
|
||||||
|
* <p>The rest of the tests use injected clocks so that we don't have to keep updating those SMD
|
||||||
|
* files and so that we can test various types of files, but this test will vail when the validity
|
||||||
|
* of the ICANN-provided file expires.
|
||||||
|
*
|
||||||
|
* <p>When this fails, check
|
||||||
|
* <a>https://newgtlds.icann.org/en/about/trademark-clearinghouse/registries-registrars</a> for a
|
||||||
|
* new updated SMD file.
|
||||||
|
*/
|
||||||
@Test
|
@Test
|
||||||
void testActiveSignedMarkFiles_areValidAndNotExpired() throws Exception {
|
void testActiveSignedMarkFiles_areValidAndNotExpired() throws Exception {
|
||||||
DomainFlowTmchUtils tmchUtils =
|
DomainFlowTmchUtils tmchUtils =
|
||||||
|
@ -47,19 +51,13 @@ class TmchTestDataExpirationTest {
|
||||||
new TmchXmlSignature(
|
new TmchXmlSignature(
|
||||||
new TmchCertificateAuthority(TmchCaMode.PILOT, new SystemClock())));
|
new TmchCertificateAuthority(TmchCaMode.PILOT, new SystemClock())));
|
||||||
|
|
||||||
for (Path path : listFiles(TmchTestDataExpirationTest.class, "active/")) {
|
String filePath = "active/smd-active-21aug20-en.smd";
|
||||||
if (path.toString().endsWith(".smd")) {
|
String tmchData = loadFile(TmchTestDataExpirationTest.class, filePath);
|
||||||
logger.atInfo().log("Verifying: %s", path);
|
|
||||||
String tmchData = ResourceUtils.readResourceUtf8(path.toUri().toURL());
|
|
||||||
EncodedSignedMark smd = TmchData.readEncodedSignedMark(tmchData);
|
EncodedSignedMark smd = TmchData.readEncodedSignedMark(tmchData);
|
||||||
try {
|
try {
|
||||||
tmchUtils.verifyEncodedSignedMark(smd, DateTime.now(UTC));
|
tmchUtils.verifyEncodedSignedMark(smd, DateTime.now(UTC));
|
||||||
} catch (EppException e) {
|
} catch (EppException e) {
|
||||||
throw new AssertionError("Error verifying signed mark " + path, e);
|
throw new AssertionError("Error verifying signed mark " + filePath, e);
|
||||||
}
|
|
||||||
} else {
|
|
||||||
logger.atInfo().log("Ignored: %s", path);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
Marks: Test & Validate
|
||||||
|
smdID: 000000851598037875889-65535
|
||||||
|
U-labels: test---validate, test--validate, test-and-validate, test-andvalidate, test-validate, testand-validate, testandvalidate, testvalidate
|
||||||
|
notBefore: 2020-08-21T19:24:35.889Z
|
||||||
|
notAfter: 2023-08-18T14:57:36.681Z
|
||||||
|
-----BEGIN ENCODED SMD-----
|
||||||
|
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c21kOnNpZ25lZE1hcmsgeG1s
|
||||||
|
bnM6c21kPSJ1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOnNpZ25lZE1hcmstMS4wIiBpZD0iX2UwMGE3
|
||||||
|
N2EyLTdjYWItNGNiOS1iYmJjLTg2MmYxZjQ4ODlmMSI+PHNtZDppZD4wMDAwMDA4NTE1OTgwMzc4
|
||||||
|
NzU4ODktNjU1MzU8L3NtZDppZD48c21kOmlzc3VlckluZm8gaXNzdWVySUQ9IjY1NTM1Ij48c21k
|
||||||
|
Om9yZz5JQ0FOTiBUTUNIIFRFU1RJTkcgVE1WPC9zbWQ6b3JnPjxzbWQ6ZW1haWw+bm90YXZhaWxh
|
||||||
|
YmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+PHNtZDp1cmw+d3d3LmV4YW1wbGUuY29tPC9zbWQ6
|
||||||
|
dXJsPjxzbWQ6dm9pY2UgeD0iIj4rMzIuMjAwMDAwMDA8L3NtZDp2b2ljZT48L3NtZDppc3N1ZXJJ
|
||||||
|
bmZvPjxzbWQ6bm90QmVmb3JlPjIwMjAtMDgtMjFUMTk6MjQ6MzUuODg5Wjwvc21kOm5vdEJlZm9y
|
||||||
|
ZT48c21kOm5vdEFmdGVyPjIwMjMtMDgtMThUMTQ6NTc6MzYuNjgxWjwvc21kOm5vdEFmdGVyPjxt
|
||||||
|
YXJrOm1hcmsgeG1sbnM6bWFyaz0idXJuOmlldGY6cGFyYW1zOnhtbDpuczptYXJrLTEuMCI+PG1h
|
||||||
|
cms6Y291cnQ+PG1hcms6aWQ+MDAwMTM3MTUwMzA2Nzg2ODE1MDMwNjc4NjgtMTwvbWFyazppZD48
|
||||||
|
bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPjxtYXJrOmhv
|
||||||
|
bGRlciBlbnRpdGxlbWVudD0ib3duZXIiPjxtYXJrOm5hbWU+VG9ueSBIb2xsYW5kPC9tYXJrOm5h
|
||||||
|
bWU+PG1hcms6b3JnPkFnIGNvcnBvcmF0aW9uPC9tYXJrOm9yZz48bWFyazphZGRyPjxtYXJrOnN0
|
||||||
|
cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PjxtYXJrOnN0cmVldC8+PG1hcms6
|
||||||
|
c3RyZWV0Lz48bWFyazpjaXR5PkFyY2FkaWE8L21hcms6Y2l0eT48bWFyazpzcC8+PG1hcms6cGM+
|
||||||
|
OTAwMjg8L21hcms6cGM+PG1hcms6Y2M+VVM8L21hcms6Y2M+PC9tYXJrOmFkZHI+PC9tYXJrOmhv
|
||||||
|
bGRlcj48bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij48bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwv
|
||||||
|
bWFyazpuYW1lPjxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+PG1hcms6YWRkcj48
|
||||||
|
bWFyazpzdHJlZXQ+QnJpZ2h0IEF2ZW51ZSAxMzA1IDwvbWFyazpzdHJlZXQ+PG1hcms6Y2l0eT5B
|
||||||
|
cmNhZGlhPC9tYXJrOmNpdHk+PG1hcms6c3A+Q0E8L21hcms6c3A+PG1hcms6cGM+OTAwMjg8L21h
|
||||||
|
cms6cGM+PG1hcms6Y2M+VVM8L21hcms6Y2M+PC9tYXJrOmFkZHI+PG1hcms6dm9pY2U+KzEuMjAy
|
||||||
|
NTU2MjMwMjwvbWFyazp2b2ljZT48bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+PG1h
|
||||||
|
cms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD48L21hcms6Y29udGFj
|
||||||
|
dD48bWFyazpsYWJlbD50ZXN0LS0tdmFsaWRhdGU8L21hcms6bGFiZWw+PG1hcms6bGFiZWw+dGVz
|
||||||
|
dC0tdmFsaWRhdGU8L21hcms6bGFiZWw+PG1hcms6bGFiZWw+dGVzdC1hbmQtdmFsaWRhdGU8L21h
|
||||||
|
cms6bGFiZWw+PG1hcms6bGFiZWw+dGVzdC1hbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD48bWFyazps
|
||||||
|
YWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPjxtYXJrOmxhYmVsPnRlc3RhbmQtdmFsaWRh
|
||||||
|
dGU8L21hcms6bGFiZWw+PG1hcms6bGFiZWw+dGVzdGFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPjxt
|
||||||
|
YXJrOmxhYmVsPnRlc3R2YWxpZGF0ZTwvbWFyazpsYWJlbD48bWFyazpnb29kc0FuZFNlcnZpY2Vz
|
||||||
|
Pmd1aXRhcjwvbWFyazpnb29kc0FuZFNlcnZpY2VzPjxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJl
|
||||||
|
Zk51bT48bWFyazpwcm9EYXRlPjIwMTMtMDEtMDFUMDA6MDA6MDAuMDAwWjwvbWFyazpwcm9EYXRl
|
||||||
|
PjxtYXJrOmNjPlVTPC9tYXJrOmNjPjxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFt
|
||||||
|
ZT48L21hcms6Y291cnQ+PC9tYXJrOm1hcms+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDov
|
||||||
|
L3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDVlNDkwNC00NjE3LTRhYWItYTZk
|
||||||
|
ZS1kNzJmZjllZTBlMTEiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9k
|
||||||
|
IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRz
|
||||||
|
OlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1s
|
||||||
|
ZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI19lMDBhNzdhMi03Y2Fi
|
||||||
|
LTRjYjktYmJiYy04NjJmMWY0ODg5ZjEiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxn
|
||||||
|
b3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25h
|
||||||
|
dHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEw
|
||||||
|
L3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0
|
||||||
|
aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RW
|
||||||
|
YWx1ZT5HeFhDcFpJTlQ3KzNJUmszQjBjYlZTTFBsaFVTUkV0MFppYlcyQWVMSDlBPTwvZHM6RGln
|
||||||
|
ZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfOTZmM2EyMzUtMDc2
|
||||||
|
Ny00OTk5LWEwZDQtODM2ZDkxY2MxZjg0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFs
|
||||||
|
Z29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpU
|
||||||
|
cmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y
|
||||||
|
MDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+Y2pXUTVtdlRPMzVlK3czczIr
|
||||||
|
R1B0S1NIQzIxczc4Q1VwWWlCODVqOUdwbz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNl
|
||||||
|
PjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il8zNGVkZDBlZS03MzBkLTQz
|
||||||
|
YTQtYTNiZC0wNzA2ZGRmZWNkMDIiPjBaT2p0eDZWd1NnNlRhYXBTeWpiSitHdk5DSyszWElOWnUy
|
||||||
|
MVlmWmNHYmZ5WmI2cGk3NCtqYkdaaFY4NzlSdlFPU1hoUmpNTWVHUHMKNDY0dU81WDROL1ZMUith
|
||||||
|
dlZxWnFTSUxBTk4zSkFKVHlnSHoyUFV0T3VzYm5xdWtRZVI1dGdEckJWT0VPMElWZVpWb1A2UGJM
|
||||||
|
ekVBZwpzQ1d4THowbXFQeUM1ZXVqZ284SGJlTmJoYXRFL00zNFV6WHJKSVM2YTNma1NTQWdjbnp4
|
||||||
|
OG1Wd2VhUVlxQXF4Vit0ck9mWHYxYWxqCnBRTlFEWElFQnZ4U2NsMmhic01oZ1dLZmxITmJQVHZL
|
||||||
|
a0lSQ3JBN3hFVVFyTjlFdDZKdkdKMU1BeW50eEpnLzl0ZjZKcEU1aDJCdHcKdEJNaDRRY2ZmN21G
|
||||||
|
aUhCQ2RSeEg3d2tIa1ZSTmE2WXFCeE9XQ0E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUlu
|
||||||
|
Zm8gSWQ9Il85NmYzYTIzNS0wNzY3LTQ5OTktYTBkNC04MzZkOTFjYzFmODQiPjxkczpYNTA5RGF0
|
||||||
|
YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZYRENDQkVTZ0F3SUJBZ0lJZml1bERhR082NWd3RFFZ
|
||||||
|
SktvWklodmNOQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTYKQmdOVkJBb1RNMGx1ZEdW
|
||||||
|
eWJtVjBJRU52Y25CdmNtRjBhVzl1SUdadmNpQkJjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0
|
||||||
|
WW1WeQpjekV2TUMwR0ExVUVBeE1tU1VOQlRrNGdWSEpoWkdWdFlYSnJJRU5zWldGeWFXNW5hRzkx
|
||||||
|
YzJVZ1VHbHNiM1FnUTBFd0hoY05NakF3Ck9ERXpNREF3TURBd1doY05Nak13TXpNeE1qTTFPVFU1
|
||||||
|
V2pDQnlERUxNQWtHQTFVRUJoTUNRa1V4RVRBUEJnTlZCQWdUQ0VKeWRYTnoKWld4ek1SSXdFQVlE
|
||||||
|
VlFRSEV3bFdhV3gyYjI5eVpHVXhNVEF2QmdOVkJBb01LRVJsYkc5cGRIUmxJRU52Ym5OMWJIUnBi
|
||||||
|
bWNnSmlCQgpaSFpwYzI5eWVTQkRWa0pCTDFORFVrd3hPREEyQmdOVkJBTVRMMGxEUVU1T0lGUk5R
|
||||||
|
MGdnUVhWMGFHOXlhWHBsWkNCVWNtRmtaVzFoCmNtc2dVR2xzYjNRZ1ZtRnNhV1JoZEc5eU1TVXdJ
|
||||||
|
d1lKS29aSWh2Y05BUWtCRmhaaVpYUnRZMmh6YldSQVpHVnNiMmwwZEdVdVkyOXQKTUlJQklqQU5C
|
||||||
|
Z2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEwNU9XdnFONWJlTG8yL29jSjVOZXNH
|
||||||
|
dzFqVTF6a3FRdgorME5rTEw4UWx4Wmg5Y015bmYvbmlHVHlTeU94MTk0QlNyb1B2a3drd0xqZTNG
|
||||||
|
TmhtVitCc1pvN2J5dGpVOUZDU2dkMzhvUjRnaHRRCjVhV2t4VkxyWW51cTlUTWQzYVBwWEswMTJD
|
||||||
|
Wnd1ZzRsc3VpVkk5Y0lTTkxoK3RoZzZJVWtmQnNVRlRiQ2tvbVdhcjV1UXFoR3JjMWQKazhjUE1o
|
||||||
|
VUxpUm85bnFRRDM1NjYxcFdlWTk4Z0MrTGEwVkZVOXFDUmpXMzcwK3dZZ25VY2ZMQ3NTYWx5dVZE
|
||||||
|
STlYUGlHRmtXRkd3TwpyUklQRTY2MjBjTThPRGF3RFFlQTlCcUNVa0ZpUE91RXFGU2VrNExPTU9L
|
||||||
|
ZFlNNXRSRUd4bHI3anJBQWVDNTRTejFDRlNsUWdIbXlZCncvbUVOd0lEQVFBQm80SUJrekNDQVk4
|
||||||
|
d0RBWURWUjBUQVFIL0JBSXdBREFkQmdOVkhRNEVGZ1FVTlZkWFQ0SGZNSWIrcWgyU0duV28KTGRK
|
||||||
|
dFhsZ3dnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFhTb3B0M0RFTm5uR2hnWUNr
|
||||||
|
ZmpCOE1Rc3dDUVlEVlFRRwpFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5
|
||||||
|
WVhScGIyNGdabTl5SUVGemMybG5ibVZrSUU1aGJXVnpJR0Z1ClpDQk9kVzFpWlhKek1TOHdMUVlE
|
||||||
|
VlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoY21zZ1EyeGxZWEpwYm1kb2IzVnpaU0JRYVd4dmRDQkQK
|
||||||
|
UVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk5oWGt3RGdZRFZSMFBB
|
||||||
|
UUgvQkFRREFnZUFNRFFHQTFVZApId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhi
|
||||||
|
bTR1YjNKbkwzUnRZMmhmY0dsc2IzUXVZM0pzTUZFR0ExVWRJQVJLCk1FZ3dFQVlPS3dZQkJBR0N5
|
||||||
|
UnNCQllNN0RBb3dOQVlJS3dZQkJRVUhBZ0V3S0RBbUJnZ3JCZ0VGQlFjQ0FSWWFhSFIwY0hNNkx5
|
||||||
|
OWoKWVM1cFkyRnViaTV2Y21jdmNHbHNiM1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUYzektx
|
||||||
|
dTBrUXZwT3RzVXAxMVIzRHlXdHRtagp5T1VsSnkvVTc0Vms3Z2JUVlJqZG85bTJTT2wyOERrVmgz
|
||||||
|
TlVRSVZSSjk2QWhlTWEvN3hUM0F1UjZRYlJUZkN3ekh5N282R1dIZkg4Cjh4UDNRU1NwZ2wzcUVV
|
||||||
|
ekRzMG1hRFJNUzNiZEQ3VzlKdWJzYzB5NmZaNm5hVWRxbFFUMXVJSEgvWW5hWXV5azRJSFRRTFRa
|
||||||
|
NFhlVFMKQjZVR3pha1h0UFFLblZ3dDFCa2FSN281SVFVbXVDSUp0KzZrYjVNVlhhRnNGZDFYbm1t
|
||||||
|
RGg0dDVlSWRyYnJGZTlMdzBxbXR4M3FhdApZRXFqbTdOcEJnOXp1dUNMN3JDWGF1Y3VMVDZmVHZB
|
||||||
|
VXhHaTdEdlhQTUE2K2x2dVc5WURBcVAvY3FEYTYvdnBNMStHRnB5VEhMT2UwClY0T01PTy90U25n
|
||||||
|
PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2ln
|
||||||
|
bmF0dXJlPjwvc21kOnNpZ25lZE1hcms+Cg==
|
||||||
|
-----END ENCODED SMD-----
|
Loading…
Add table
Reference in a new issue