diff --git a/java/google/registry/flows/domain/DomainApplicationCreateFlow.java b/java/google/registry/flows/domain/DomainApplicationCreateFlow.java index e845ade31..f55e6643a 100644 --- a/java/google/registry/flows/domain/DomainApplicationCreateFlow.java +++ b/java/google/registry/flows/domain/DomainApplicationCreateFlow.java @@ -37,7 +37,7 @@ import static google.registry.flows.domain.DomainFlowUtils.verifyNoCodeMarks; import static google.registry.flows.domain.DomainFlowUtils.verifyNotReserved; import static google.registry.flows.domain.DomainFlowUtils.verifyPremiumNameIsNotBlocked; import static google.registry.flows.domain.DomainFlowUtils.verifyRegistrarIsActive; -import static google.registry.flows.domain.DomainFlowUtils.verifyRegistryStateAllowsLaunchFlows; +import static google.registry.flows.domain.DomainFlowUtils.verifyRegistryStateAllowsApplicationFlows; import static google.registry.flows.domain.DomainFlowUtils.verifyUnitIsYears; import static google.registry.model.EppResourceUtils.createDomainRepoId; import static google.registry.model.index.DomainApplicationIndex.loadActiveApplicationsByDomainName; @@ -320,7 +320,7 @@ public final class DomainApplicationCreateFlow implements TransactionalFlow { } boolean isSunriseApplication = !launchCreate.getSignedMarks().isEmpty(); if (!isSuperuser) { // Superusers can ignore the phase. - verifyRegistryStateAllowsLaunchFlows(registry, now); + verifyRegistryStateAllowsApplicationFlows(registry, now); verifyLaunchPhaseMatchesRegistryPhase(registry, launchCreate, now); } if (now.isBefore(registry.getClaimsPeriodEnd())) { diff --git a/java/google/registry/flows/domain/DomainApplicationDeleteFlow.java b/java/google/registry/flows/domain/DomainApplicationDeleteFlow.java index 8ceb81209..7425e23c4 100644 --- a/java/google/registry/flows/domain/DomainApplicationDeleteFlow.java +++ b/java/google/registry/flows/domain/DomainApplicationDeleteFlow.java @@ -22,7 +22,7 @@ import static google.registry.flows.ResourceFlowUtils.verifyResourceOwnership; import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld; import static google.registry.flows.domain.DomainFlowUtils.verifyApplicationDomainMatchesTargetId; import static google.registry.flows.domain.DomainFlowUtils.verifyLaunchPhaseMatchesRegistryPhase; -import static google.registry.flows.domain.DomainFlowUtils.verifyRegistryStateAllowsLaunchFlows; +import static google.registry.flows.domain.DomainFlowUtils.verifyRegistryStateAllowsApplicationFlows; import static google.registry.model.EppResourceUtils.loadDomainApplication; import static google.registry.model.ofy.ObjectifyService.ofy; @@ -91,7 +91,7 @@ public final class DomainApplicationDeleteFlow implements TransactionalFlow { if (!isSuperuser) { checkAllowedAccessToTld(clientId, tld); Registry registry = Registry.get(tld); - verifyRegistryStateAllowsLaunchFlows(registry, now); + verifyRegistryStateAllowsApplicationFlows(registry, now); verifyLaunchPhaseMatchesRegistryPhase( registry, eppInput.getSingleExtension(LaunchDeleteExtension.class).get(), now); verifyResourceOwnership(clientId, existingApplication); diff --git a/java/google/registry/flows/domain/DomainFlowUtils.java b/java/google/registry/flows/domain/DomainFlowUtils.java index d1a273092..ace82776f 100644 --- a/java/google/registry/flows/domain/DomainFlowUtils.java +++ b/java/google/registry/flows/domain/DomainFlowUtils.java @@ -118,7 +118,6 @@ import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Map.Entry; -import java.util.Objects; import java.util.Optional; import java.util.Set; import javax.annotation.Nullable; @@ -130,14 +129,14 @@ import org.joda.time.Duration; /** Static utility functions for domain flows. */ public class DomainFlowUtils { - /** Map from launch phases to the equivalent tld states. */ - private static final ImmutableMap LAUNCH_PHASE_TO_TLD_STATE = - new ImmutableMap.Builder() + /** Map from launch phases to the allowed tld states. */ + private static final ImmutableMultimap LAUNCH_PHASE_TO_TLD_STATES = + new ImmutableMultimap.Builder() .put(LaunchPhase.SUNRISE, TldState.SUNRISE) .put(LaunchPhase.SUNRUSH, TldState.SUNRUSH) .put(LaunchPhase.LANDRUSH, TldState.LANDRUSH) .put(LaunchPhase.CLAIMS, TldState.GENERAL_AVAILABILITY) - .put(LaunchPhase.START_DATE_SUNRISE, TldState.START_DATE_SUNRISE) + .put(LaunchPhase.SUNRISE, TldState.START_DATE_SUNRISE) .put(LaunchPhase.OPEN, TldState.GENERAL_AVAILABILITY) .build(); @@ -149,7 +148,7 @@ public class DomainFlowUtils { ReservationType.MISTAKEN_PREMIUM); /** Non-sunrise tld states. */ - private static final ImmutableSet DISALLOWED_TLD_STATES_FOR_LAUNCH_FLOWS = + private static final ImmutableSet DISALLOWED_TLD_STATES_FOR_APPLICATION_FLOWS = Sets.immutableEnumSet( TldState.PREDELEGATION, TldState.QUIET_PERIOD, @@ -421,8 +420,8 @@ public class DomainFlowUtils { /** Verifies that a launch extension's specified phase matches the specified registry's phase. */ static void verifyLaunchPhaseMatchesRegistryPhase( Registry registry, LaunchExtension launchExtension, DateTime now) throws EppException { - if (!Objects.equals( - registry.getTldState(now), LAUNCH_PHASE_TO_TLD_STATE.get(launchExtension.getPhase()))) { + if (!LAUNCH_PHASE_TO_TLD_STATES.containsEntry( + launchExtension.getPhase(), registry.getTldState(now))) { // No launch operations are allowed during the quiet period or predelegation. throw new LaunchPhaseMismatchException(); } @@ -843,9 +842,9 @@ public class DomainFlowUtils { } /** Check that the registry phase is not incompatible with launch extension flows. */ - static void verifyRegistryStateAllowsLaunchFlows(Registry registry, DateTime now) + static void verifyRegistryStateAllowsApplicationFlows(Registry registry, DateTime now) throws BadCommandForRegistryPhaseException { - if (DISALLOWED_TLD_STATES_FOR_LAUNCH_FLOWS.contains(registry.getTldState(now))) { + if (DISALLOWED_TLD_STATES_FOR_APPLICATION_FLOWS.contains(registry.getTldState(now))) { throw new BadCommandForRegistryPhaseException(); } } diff --git a/java/google/registry/model/domain/launch/LaunchPhase.java b/java/google/registry/model/domain/launch/LaunchPhase.java index a8199b6c6..ba0accdae 100644 --- a/java/google/registry/model/domain/launch/LaunchPhase.java +++ b/java/google/registry/model/domain/launch/LaunchPhase.java @@ -58,6 +58,10 @@ public class LaunchPhase extends ImmutableObject { /** * The phase during which trademark holders can submit registrations or applications with * trademark information that can be validated by the server. + * + * This phase works for both start-date and end-data sunrise. + * + * TODO(b/74006379): maybe make this work for sunrush phase? */ public static final LaunchPhase SUNRISE = create("sunrise", null); @@ -76,12 +80,6 @@ public class LaunchPhase extends ImmutableObject { */ public static final LaunchPhase CLAIMS = create("claims", null); - /** - * An alternative launch phase which allows only trademark owners to create domains. It is used - * instead of the previous phases. - */ - public static final LaunchPhase START_DATE_SUNRISE = create("sunrise", "start-date"); - /** A post-launch phase that is also referred to as "steady state". */ public static final LaunchPhase OPEN = create("open", null); diff --git a/javatests/google/registry/flows/domain/DomainCreateFlowTest.java b/javatests/google/registry/flows/domain/DomainCreateFlowTest.java index e60f6f037..1a0f4f882 100644 --- a/javatests/google/registry/flows/domain/DomainCreateFlowTest.java +++ b/javatests/google/registry/flows/domain/DomainCreateFlowTest.java @@ -1778,6 +1778,19 @@ public class DomainCreateFlowTest extends ResourceFlowTestCase - sunrise + sunrise true diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise.xml index 00a3c10cf..0089de371 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise.xml @@ -22,7 +22,7 @@ - sunrise + sunrise ABC-12345 diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_claims_notice.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_claims_notice.xml index ebfe9edc6..67bebc142 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_claims_notice.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_claims_notice.xml @@ -20,7 +20,7 @@ - sunrise + sunrise 370d0b7c9223372036854775807 2010-08-16T09:00:00.0Z diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_encoded_signed_mark.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_encoded_signed_mark.xml index 72a4cc85a..5d5953598 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_encoded_signed_mark.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_encoded_signed_mark.xml @@ -20,7 +20,7 @@ - sunrise + sunrise PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_wrong_encoded_signed_mark.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_wrong_encoded_signed_mark.xml index bbf74b21a..d0238d062 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_wrong_encoded_signed_mark.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_create_registration_start_date_sunrise_wrong_encoded_signed_mark.xml @@ -20,7 +20,7 @@ - sunrise + sunrise PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= diff --git a/javatests/google/registry/flows/testdata/domain_create_start_date_sunrise_encoded_mark.xml b/javatests/google/registry/flows/testdata/domain_create_start_date_sunrise_encoded_mark.xml index 12f617fff..42346ad72 100644 --- a/javatests/google/registry/flows/testdata/domain_create_start_date_sunrise_encoded_mark.xml +++ b/javatests/google/registry/flows/testdata/domain_create_start_date_sunrise_encoded_mark.xml @@ -22,7 +22,7 @@ - sunrise + sunrise PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4=