diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4e7c0d9f2066757d4ddb5a73c656b428b59020f9..a9281b319db8c3ab17ce1ed55030067fd6ba80a0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,6 @@
 variables:
   JACOCO_HTML_DIR: ${REPORTS_DIR}/jacoco/test/html
-  JUNIT_FILES: build/test-results/test/TEST-*.xml
+  JUNIT_FILES: build/test-results/test*/TEST-*.xml
   NSHMP_HAZ_WS_IMAGE: ${CODE_REGISTRY_IMAGE}/nshmp-haz-ws:${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA}
   REPORTS_DIR: build/reports
 
@@ -12,6 +12,7 @@ workflow:
 
 stages:
   - build
+  - test
   - trigger
 
 default:
@@ -157,7 +158,6 @@ default:
 ##
 .java:
   image: ${DEVOPS_REGISTRY}usgs/amazoncorretto:11
-  stage: build
 
 ####
 # Stage: build
@@ -217,22 +217,52 @@ Build Project:
     - .java
   script:
     - ./gradlew assemble
+  stage: build
+
+####
+# Stage: test
+####
 
 Markdown Lint:
   allow_failure: true
   extends:
     - .java
+  needs: []
   script:
     - ./gradlew nodeInstall
     - ./gradlew markdownlint
+  stage: test
+
+NSHM Tests:
+  artifacts:
+    paths:
+      - ${JACOCO_HTML_DIR}
+    reports:
+      junit: ${JUNIT_FILES}
+  coverage: '/Total.*?([0-9]{1,3})%/'
+  extends:
+    - .java
+  needs: []
+  parallel:
+    matrix:
+      - CMD: testAlaska2023
+      - CMD: testConus2018
+      - CMD: testConus2023
+      - CMD: testHawaii2021
+  script:
+    - ./gradlew ${CMD}
+    - cat ${JACOCO_HTML_DIR}/index.html
+  stage: test
 
 YAML Lint:
   allow_failure: true
   extends:
     - .java
+  needs: []
   script:
     - ./gradlew nodeInstall
     - ./gradlew yamllint
+  stage: test
 
 Unit Tests:
   artifacts:
@@ -243,9 +273,11 @@ Unit Tests:
   coverage: '/Total.*?([0-9]{1,3})%/'
   extends:
     - .java
+  needs: []
   script:
     - ./gradlew check
     - cat ${JACOCO_HTML_DIR}/index.html
+  stage: test
 
 ####
 # Stage: trigger
diff --git a/build.gradle b/build.gradle
index 5110420ec842862e0bd7b7d6eaf1ac1d5913095c..a239e1c8a4c7645bb377f81f3f442812bef2e3d4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -34,10 +34,13 @@ jacoco {
 }
 
 jacocoTestReport {
+  getExecutionData().setFrom(fileTree(buildDir).include("/jacoco/*.exec"))
+
   reports {
     xml.enabled true
     html.enabled true
   }
+
   afterEvaluate {
     classDirectories.from(files(classDirectories.files.collect {
       fileTree(
@@ -48,13 +51,17 @@ jacocoTestReport {
 }
 check.dependsOn jacocoTestReport
 
+tasks.withType(Test) {
+  finalizedBy jacocoTestReport
+}
+
 tasks.withType(JavaCompile) {
   options.encoding = "UTF-8"
   options.compilerArgs.add("-parameters")
 }
 
 tasks.withType(JavaExec) {
-  dependsOn downloadNshms
+  dependsOn nshms
   jvmArgs(
       '-noverify',
       '-Xms2g',
@@ -78,7 +85,6 @@ test {
   useJUnitPlatform()
 
   filter {
-    excludeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTestsConus"
-    excludeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTestsHawaii"
+    excludeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTests"
   }
 }
diff --git a/gradle/nshm.gradle b/gradle/nshm.gradle
index 56bf10cf71c7ac143974d49c553ecfa65c02826c..5eecb87f60f13bc56d519bbdc4b64f494cd659df 100644
--- a/gradle/nshm.gradle
+++ b/gradle/nshm.gradle
@@ -1,25 +1,33 @@
 apply plugin: "de.undercouch.download"
 
+buildscript {
+  repositories {
+    mavenCentral()
+  }
+  dependencies {
+    classpath "org.yaml:snakeyaml:1.33"
+  }
+}
+
+import org.yaml.snakeyaml.Yaml
+
 ext {
-  archiveUrl = "https://code.usgs.gov/ghsc/nshmp/nshms/nshm-conus/-/archive"
   nshmDir = "nshms";
-}
 
-/**
- * Download the default NSHM to use for the web services.
- */
-task downloadNshms() {
-  doLast {
-    // Download and unzip nshm-conus tag 5.2.0
-    def zipFile = new File(nshmDir, "nshm-conus-5.2.0.zip")
+  // Download and unzip NSHM
+  downloadNshm = {repo, tag, year ->
+    def zipName = "${repo}-${tag}.zip";
+    def zipFile = new File(nshmDir, zipName)
+
     download.run {
-      src "${archiveUrl}/5.2.0/nshm-conus-5.2.0.zip"
+      src "https://code.usgs.gov/ghsc/nshmp/nshms/${repo}/-/archive/${tag}/${zipName}"
       dest zipFile
     }
     copy {
       from zipTree(zipFile)
       into nshmDir
     }
+    file("${nshmDir}/${repo}-${tag}").renameTo(file("${nshmDir}/${repo}-${year}"))
     delete {
       delete zipFile
     }
@@ -30,3 +38,101 @@ task cleanNshm(type: Delete) {
   delete nshmDir
 }
 clean.dependsOn cleanNshm
+
+// Download all NSHMs
+task nshms() {
+  dependsOn cleanNshm
+  def yaml = new Yaml()
+  def nshmConfig = new Yaml().load(new File("nshms.yml").newInputStream())
+
+  doLast {
+    for (nshm in nshmConfig.nshms) {
+      // Download NSHM
+      downloadNshm(nshm.repo, nshm.tag, nshm.year)
+    }
+  }
+}
+
+// Test Alaska 2023 NSHM
+task testAlaska2023(type: Test) {
+  description = "Test Alaska 2023 NSHM"
+  group = "verification"
+  dependsOn nshms
+
+  testLogging {
+    exceptionFormat "full"
+  }
+
+  useJUnitPlatform()
+  jvmArgs(
+      "-Xms2g",
+      "-Xmx8g",
+      )
+
+  filter {
+    includeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTests.testAlaska2023"
+  }
+}
+
+// Test CONUS 2018 NSHM
+task testConus2018(type: Test) {
+  description = "Test CONUS 2018 NSHM"
+  group = "verification"
+  dependsOn nshms
+
+  testLogging {
+    exceptionFormat "full"
+  }
+
+  useJUnitPlatform()
+  jvmArgs(
+      "-Xms2g",
+      "-Xmx8g",
+      )
+
+  filter {
+    includeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTests.testConus2018"
+  }
+}
+
+// Test CONUS 2023 NSHM
+task testConus2023(type: Test) {
+  description = "Test CONUS 2023 NSHM"
+  group = "verification"
+  dependsOn nshms
+
+  testLogging {
+    exceptionFormat "full"
+  }
+
+  useJUnitPlatform()
+  jvmArgs(
+      "-Xms2g",
+      "-Xmx8g",
+      )
+
+  filter {
+    includeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTests.testConus2023"
+  }
+}
+
+// Test Hawaii 2021 NSHM
+task testHawaii2021(type: Test) {
+  description = "Test Hawaii 2021 NSHM"
+  group = "verification"
+  dependsOn nshms
+
+  testLogging {
+    exceptionFormat "full"
+  }
+
+  useJUnitPlatform()
+  jvmArgs(
+      "-Xms2g",
+      "-Xmx8g",
+      )
+
+  filter {
+    includeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTests.testHawaii2021"
+  }
+}
diff --git a/nshms.yml b/nshms.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3fcf34579a729a56775b90a5efbddb99c6c1cc9e
--- /dev/null
+++ b/nshms.yml
@@ -0,0 +1,57 @@
+####
+# NSHMs to use for unit tests and for deployments.
+####
+nshms:
+  # Alaska 2023 NSHM
+  -
+    repo: nshm-alaska
+    tag: 3.a.0
+    year: 2023
+    deployments:
+      development:
+        instanceType: t4g.xlarge
+      staging:
+        instanceType: t4g.2xlarge
+      # TODO: Add to production when model is stable
+      # production:
+      #   instanceType: m6g.2xlarge
+
+  # CONUS 2018 NSHM
+  -
+    repo: nshm-conus
+    tag: 5.2.0
+    year: 2018
+    deployments:
+      development:
+        instanceType: t4g.xlarge
+      staging:
+        instanceType: m6g.4xlarge
+      production:
+        instanceType: m6g.4xlarge
+
+  # CONUS 2023 NSHM
+  -
+    repo: nshm-conus
+    tag: 6.a.3
+    year: 2023
+    deployments:
+      development:
+        instanceType: t4g.xlarge
+      staging:
+        instanceType: m6g.4xlarge
+      # TODO: Add to production when model is stable
+      # production:
+      #   instanceType: m6g.4xlarge
+
+  # Hawaii 2021 NSHM
+  -
+    repo: nshm-hawaii
+    tag: 2.0.2
+    year: 2021
+    deployments:
+      development:
+        instanceType: t4g.xlarge
+      staging:
+        instanceType: t4g.2xlarge
+      production:
+        instanceType: m6g.2xlarge
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 6ae5685ebdab7e1a7d477fab3068da324d310324..7d46c279404717ec0d3f06223a13cb1da59b93a3 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -21,4 +21,4 @@ nshmp-haz:
   # To specify the model to use:
   #     java -jar build/libs/nshmp-haz.jar --model=<path/to/model>
   #
-  model-path: ${model:nshms/nshm-conus-5.2.0}
+  model-path: ${model:nshms/nshm-conus-2018}
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..921cce17f15e4bcae871255cb0aa8bc86cf49b27
--- /dev/null
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java
@@ -0,0 +1,277 @@
+package gov.usgs.earthquake.nshmp.model;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.stream.Collectors;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+
+import gov.usgs.earthquake.nshmp.NamedLocation;
+import gov.usgs.earthquake.nshmp.calc.CalcConfig;
+import gov.usgs.earthquake.nshmp.calc.Hazard;
+import gov.usgs.earthquake.nshmp.calc.HazardCalcs;
+import gov.usgs.earthquake.nshmp.calc.Site;
+import gov.usgs.earthquake.nshmp.data.XySequence;
+import gov.usgs.earthquake.nshmp.gmm.Imt;
+
+import io.swagger.v3.core.util.Yaml;
+
+/**
+ * Utilities to run tests on a NSHM.
+ */
+class NshmTestUtils {
+  private static final Path DATA_PATH = Paths.get("src/test/resources/e2e");
+
+  private static final double TOLERANCE = 1e-12;
+
+  private static final Gson GSON = new GsonBuilder()
+      .setPrettyPrinting()
+      .create();
+
+  /**
+   * Load a model.
+   *
+   * @param nshm The NSHM
+   */
+  static NshmModel loadModel(Nshm nshm) {
+    int cores = Runtime.getRuntime().availableProcessors();
+
+    return new NshmModel(
+        nshm,
+        ModelLoader.load(nshm.modelPath()),
+        Executors.newFixedThreadPool(cores));
+  }
+
+  /**
+   * Read in nshms.yml file.
+   */
+  static NshmConfig readNshms() {
+    try {
+      JsonNode jsonNode = Yaml.mapper().readValue(Paths.get("nshms.yml").toFile(), JsonNode.class);
+      return GSON.fromJson(jsonNode.toString(), NshmConfig.class);
+    } catch (Exception e) {
+      throw new RuntimeException("Failed to read and parse nshms.yml file");
+    }
+  }
+
+  /**
+   * Test a NSHM.
+   *
+   * @param nshm The NSHM to test
+   */
+  static void testNshm(Nshm nshm) {
+    NshmModel nshmModel = loadModel(nshm);
+
+    for (NamedLocation location : nshm.locations()) {
+      compareCurves(nshmModel, location);
+    }
+
+    nshmModel.exec.shutdown();
+  }
+
+  /**
+   * Write expected values
+   *
+   * @param nshmModel The NSHM model
+   */
+  static void writeExpecteds(NshmModel nshmModel) throws IOException {
+    for (NamedLocation location : nshmModel.nshm.locations()) {
+      Map<String, XySequence> xyMap = generateActual(nshmModel, location);
+      String json = GSON.toJson(xyMap);
+      writeExpected(nshmModel.nshm, location, json);
+    }
+  }
+
+  private static void assertCurveEquals(XySequence expected, XySequence actual, double tol) {
+    // IMLs close but not exact due to exp() transform
+    assertArrayEquals(
+        expected.xValues().toArray(),
+        actual.xValues().toArray(),
+        tol);
+
+    double[] expectedYs = expected.yValues().toArray();
+    double[] actualYs = actual.yValues().toArray();
+
+    // absolute y-value difference relative to tolerance
+    assertArrayEquals(expectedYs, actualYs, tol);
+
+    // relative y-value difference relative to tolerance
+    for (int i = 0; i < expectedYs.length; i++) {
+      String message = String.format(
+          "arrays differ at [%s] expected:<[%s]> but was:<[%s]>",
+          i, expectedYs[i], actualYs[i]);
+      assertTrue(compare(expectedYs[i], actualYs[i], tol), message);
+    }
+  }
+
+  private static boolean compare(double expected, double actual, double tolerance) {
+    return Math.abs(actual - expected) / expected < tolerance ||
+        Double.valueOf(expected).equals(Double.valueOf(actual));
+  }
+
+  private static void compareCurves(NshmModel nshmModel, NamedLocation location) {
+    Map<String, XySequence> actual = generateActual(nshmModel, location);
+    Map<String, XySequence> expected = readExpected(nshmModel, location);
+
+    for (String key : actual.keySet()) {
+      assertCurveEquals(expected.get(key), actual.get(key), TOLERANCE);
+    }
+  }
+
+  private static Map<String, XySequence> generateActual(
+      NshmModel nshmModel,
+      NamedLocation location) {
+    Site site = Site.builder().location(location.location()).build();
+
+    CalcConfig config = CalcConfig.copyOf(nshmModel.model.config())
+        .imts(nshmModel.nshm.imts())
+        .build();
+
+    Hazard hazard = HazardCalcs.hazard(
+        nshmModel.model,
+        config,
+        site,
+        nshmModel.exec);
+
+    Map<String, XySequence> xyMap = hazard.curves().entrySet().stream()
+        .collect(Collectors.toMap(
+            e -> e.getKey().toString(),
+            Entry::getValue));
+
+    return xyMap;
+  }
+
+  private static Map<String, XySequence> readExpected(NshmModel nshmModel, NamedLocation loc) {
+    Path resultPath = DATA_PATH
+        .resolve(nshmModel.nshm.modelName())
+        .resolve(nshmModel.nshm.resultFilename(loc));
+
+    JsonObject obj = null;
+    try (BufferedReader br = Files.newBufferedReader(resultPath)) {
+      obj = JsonParser.parseReader(br).getAsJsonObject();
+    } catch (IOException ioe) {
+      throw new RuntimeException(ioe);
+    }
+
+    Type curveDataType = new TypeToken<Map<String, Curve>>() {}.getType();
+    Map<String, Curve> curveMap = GSON.fromJson(obj, curveDataType);
+    Map<String, XySequence> xyMap = curveMap.entrySet().stream()
+        .collect(Collectors.toMap(
+            Entry::getKey,
+            e -> XySequence.create(e.getValue().xs, e.getValue().ys)));
+    return xyMap;
+  }
+
+  private static void writeExpected(
+      Nshm nshm,
+      NamedLocation loc,
+      String json) throws IOException {
+    Path modelDir = DATA_PATH.resolve(nshm.modelName());
+    if (!Files.exists(modelDir)) {
+      Files.createDirectories(modelDir);
+    }
+    Path resultPath = modelDir.resolve(nshm.resultFilename(loc));
+    Files.write(resultPath, json.getBytes());
+  }
+
+  private static class Curve {
+    double[] xs;
+    double[] ys;
+
+    @SuppressWarnings("unused")
+    Curve(double[] xs, double[] ys) {
+      this.xs = xs;
+      this.ys = ys;
+    }
+  }
+
+  static class NshmModel {
+    HazardModel model;
+    ExecutorService exec;
+    Nshm nshm;
+
+    NshmModel(Nshm nshm, HazardModel model, ExecutorService exec) {
+      this.nshm = nshm;
+      this.model = model;
+      this.exec = exec;
+    }
+  }
+
+  static class NshmInfo {
+    final String repo;
+    final String tag;
+    final int year;
+
+    NshmInfo(String repo, String tag, int year) {
+      this.repo = repo;
+      this.tag = tag;
+      this.year = year;
+    }
+  }
+
+  static class NshmConfig {
+    NshmInfo[] nshms;
+
+    NshmInfo nshm(String repo, int year) {
+      return Arrays.stream(nshms)
+          .filter(nshm -> nshm.repo == repo && nshm.year == year)
+          .findFirst()
+          .orElseThrow();
+    }
+  }
+
+  static class Nshm {
+    private final NshmInfo nshmInfo;
+    private final List<NamedLocation> locations;
+    private final Set<Imt> imts;
+
+    Nshm(NshmInfo nshmInfo, List<NamedLocation> locations, Set<Imt> imts) {
+      this.nshmInfo = nshmInfo;
+      this.locations = locations;
+      this.imts = imts;
+    }
+
+    Path modelPath() {
+      return Paths.get("nshms", modelName());
+    }
+
+    String modelName() {
+      return String.format("%s-%s", nshmInfo.repo, nshmInfo.year);
+    }
+
+    List<NamedLocation> locations() {
+      return List.copyOf(locations);
+    }
+
+    Set<Imt> imts() {
+      return Set.copyOf(imts);
+    }
+
+    int year() {
+      return nshmInfo.year;
+    }
+
+    String resultFilename(NamedLocation location) {
+      return String.format("%s-%s-%s.json", modelName(), year(), location.name());
+    }
+  }
+}
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java
new file mode 100644
index 0000000000000000000000000000000000000000..6553ac55803c8e6c6db636eb4be436cedd02f9ad
--- /dev/null
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java
@@ -0,0 +1,136 @@
+package gov.usgs.earthquake.nshmp.model;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.junit.jupiter.api.Test;
+
+import gov.usgs.earthquake.nshmp.NamedLocation;
+import gov.usgs.earthquake.nshmp.gmm.Imt;
+import gov.usgs.earthquake.nshmp.model.NshmTestUtils.Nshm;
+import gov.usgs.earthquake.nshmp.model.NshmTestUtils.NshmInfo;
+import gov.usgs.earthquake.nshmp.model.NshmTestUtils.NshmModel;
+import gov.usgs.earthquake.nshmp.site.NshmpSite;
+
+/**
+ * Test NSHMs.
+ */
+class NshmTests {
+  /* Alaska test sites */
+  private static final List<NamedLocation> ALASKA_LOCATIONS = List.of(
+      NshmpSite.ANCHORAGE_AK,
+      NshmpSite.FAIRBANKS_AK,
+      NshmpSite.JUNEAU_AK,
+      NshmpSite.KODIAK_AK,
+      NshmpSite.VALDEZ_AK);
+
+  /* CONUS test sites */
+  private static final List<NamedLocation> CONUS_LOCATIONS = List.of(
+      NshmpSite.LOS_ANGELES_CA,
+      NshmpSite.SAN_FRANCISCO_CA,
+      NshmpSite.SEATTLE_WA,
+      NshmpSite.SALT_LAKE_CITY_UT,
+      NshmpSite.RENO_NV,
+      NshmpSite.NEW_MADRID_MO,
+      NshmpSite.BOSTON_MA,
+      NshmpSite.NEW_YORK_NY,
+      NshmpSite.CHICAGO_IL);
+
+  /* Hawaii test sites */
+  private static final List<NamedLocation> HAWAII_LOCATIONS = List.of(
+      NshmpSite.HILO_HI,
+      NshmpSite.HONOLULU_HI,
+      NshmpSite.KAILUA_KONA_HI);
+
+  private static final Set<Imt> IMTS = EnumSet.of(Imt.PGA, Imt.SA0P2, Imt.SA1P0, Imt.SA5P0);
+
+  private static final Map<String, Nshm> NSHMS;
+
+  static {
+    Map<String, Nshm> nshms = new HashMap<>();
+
+    for (NshmInfo nshmInfo : NshmTestUtils.readNshms().nshms) {
+      List<NamedLocation> locations = new ArrayList<>();
+
+      switch (nshmInfo.repo) {
+        case "nshm-conus": {
+          locations = CONUS_LOCATIONS;
+          break;
+        }
+        case "nshm-alaska": {
+          locations = ALASKA_LOCATIONS;
+          break;
+        }
+        case "nshm-hawaii": {
+          locations = HAWAII_LOCATIONS;
+          break;
+        }
+        default:
+          throw new RuntimeException(nshmInfo.repo + " not supported");
+      }
+
+      nshms.put(nshmInfo.repo + "-" + nshmInfo.year, new Nshm(nshmInfo, locations, IMTS));
+    }
+
+    NSHMS = nshms;
+  }
+
+  /**
+   * Generate results for all {@link NSHM}s
+   *
+   * Run "./gradlew nshms" to first download all NSHMs
+   */
+  public static void main(String[] args) throws IOException {
+    for (Nshm nshm : NSHMS.values()) {
+      /* Initialize and shut down executor to generate results. */
+      NshmModel nshmModel = NshmTestUtils.loadModel(nshm);
+      NshmTestUtils.writeExpecteds(nshmModel);
+      nshmModel.exec.shutdown();
+    }
+  }
+
+  /**
+   * Test Alaska 2023 NSHM
+   *
+   * To run test: ./gradlew testAlaska2023
+   */
+  @Test
+  final void testAlaska2023() throws IOException {
+    NshmTestUtils.testNshm(NSHMS.get("nshm-alaska-2023"));
+  }
+
+  /**
+   * Test CONUS 2018 NSHM
+   *
+   * To run test: ./gradlew testConus2018
+   */
+  @Test
+  final void testConus2018() throws IOException {
+    NshmTestUtils.testNshm(NSHMS.get("nshm-conus-2018"));
+  }
+
+  /**
+   * Test CONUS 2023 NSHM
+   *
+   * To run test: ./gradlew testConus2023
+   */
+  @Test
+  final void testConus2023() throws IOException {
+    NshmTestUtils.testNshm(NSHMS.get("nshm-conus-2023"));
+  }
+
+  /**
+   * Test Hawaii 2021 NSHM
+   *
+   * To run test: ./gradlew testHawaii2021
+   */
+  @Test
+  final void testHawaii2021() throws IOException {
+    NshmTestUtils.testNshm(NSHMS.get("nshm-hawaii-2021"));
+  }
+}
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsConus.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsConus.java
deleted file mode 100644
index d9db18747cbe982cbbfe03e0a2913ee29d815468..0000000000000000000000000000000000000000
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsConus.java
+++ /dev/null
@@ -1,255 +0,0 @@
-package gov.usgs.earthquake.nshmp.model;
-
-import static gov.usgs.earthquake.nshmp.gmm.Imt.PGA;
-import static gov.usgs.earthquake.nshmp.gmm.Imt.SA0P2;
-import static gov.usgs.earthquake.nshmp.gmm.Imt.SA1P0;
-import static gov.usgs.earthquake.nshmp.gmm.Imt.SA5P0;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.BOSTON_MA;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.CHICAGO_IL;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.LOS_ANGELES_CA;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.NEW_MADRID_MO;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.NEW_YORK_NY;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.RENO_NV;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.SALT_LAKE_CITY_UT;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.SAN_FRANCISCO_CA;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.SEATTLE_WA;
-import static java.lang.Math.abs;
-import static org.junit.jupiter.api.Assertions.assertArrayEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
-
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-
-import gov.usgs.earthquake.nshmp.NamedLocation;
-import gov.usgs.earthquake.nshmp.calc.CalcConfig;
-import gov.usgs.earthquake.nshmp.calc.Hazard;
-import gov.usgs.earthquake.nshmp.calc.HazardCalcs;
-import gov.usgs.earthquake.nshmp.calc.Site;
-import gov.usgs.earthquake.nshmp.data.XySequence;
-import gov.usgs.earthquake.nshmp.geo.Location;
-import gov.usgs.earthquake.nshmp.gmm.Imt;
-
-/**
- * Class for end-to-end tests of hazard calculations. These tests require
- * significant system resources to load source models, and source models are
- * required to be in adjacent repositories. These tests should be run
- * frequently, but not as part of continuous integration. Consider nightlies.
- * Needs parameterization and additional regions.
- *
- * @author U.S. Geological Survey
- */
-class NshmTestsConus {
-
-  private static final double TOLERANCE = 1e-12;
-
-  private static final List<NamedLocation> SITES = List.of(
-      LOS_ANGELES_CA,
-      SAN_FRANCISCO_CA,
-      SEATTLE_WA,
-      SALT_LAKE_CITY_UT,
-      RENO_NV,
-      NEW_MADRID_MO,
-      BOSTON_MA,
-      NEW_YORK_NY,
-      CHICAGO_IL);
-
-  private static final Set<Imt> IMTS = EnumSet.of(PGA, SA0P2, SA1P0, SA5P0);
-
-  private static final String MODEL_NAME = "nshm-conus-2018-5.1-maint";
-  private static final String MODEL_NAME_OUT = "nshm-conus";
-  private static final int MODEL_YEAR = 2018;
-  private static final Path MODEL_PATH = Paths.get("../" + MODEL_NAME);
-  private static final Path DATA_PATH = Paths.get("src/test/resources/e2e");
-
-  private static final Gson GSON = new GsonBuilder()
-      .setPrettyPrinting()
-      .create();
-
-  private static ExecutorService exec;
-  private static HazardModel model;
-  static Map<Location, Map<String, XySequence>> expecteds;
-
-  @BeforeAll
-  static void setUpBeforeClass() {
-    model = ModelLoader.load(MODEL_PATH);
-    int cores = Runtime.getRuntime().availableProcessors();
-    exec = Executors.newFixedThreadPool(cores);
-  }
-
-  @AfterAll
-  static void tearDownAfterClass() {
-    exec.shutdown();
-  }
-
-  @ParameterizedTest
-  @MethodSource("siteStream")
-  final void testLocation(NamedLocation site) {
-    compareCurves(site);
-  }
-
-  private static Stream<NamedLocation> siteStream() {
-    return SITES.stream();
-  }
-
-  private static void compareCurves(NamedLocation location) {
-
-    // String actual = generateActual(model, location);
-    Map<String, XySequence> actual = generateActual(location);
-    // String expected = readExpected(modelName, year, location);
-    Map<String, XySequence> expected = readExpected(location);
-    // assertEquals(expected, actual);
-
-    // assertEquals(expected.keySet(), actual.keySet());
-    for (String key : actual.keySet()) {
-      assertCurveEquals(expected.get(key), actual.get(key), TOLERANCE);
-    }
-  }
-
-  private static void assertCurveEquals(XySequence expected, XySequence actual, double tol) {
-
-    // IMLs close but not exact due to exp() transform
-    assertArrayEquals(
-        expected.xValues().toArray(),
-        actual.xValues().toArray());
-
-    double[] expectedYs = expected.yValues().toArray();
-    double[] actualYs = actual.yValues().toArray();
-
-    // absolute y-value difference relative to tolerance
-    assertArrayEquals(expectedYs, actualYs, tol);
-
-    // relative y-value difference relative to tolerance
-    for (int i = 0; i < expectedYs.length; i++) {
-      String message = String.format(
-          "arrays differ at [%s] expected:<[%s]> but was:<[%s]>",
-          i, expectedYs[i], actualYs[i]);
-      assertTrue(compare(expectedYs[i], actualYs[i], tol), message);
-    }
-  }
-
-  private static boolean compare(double expected, double actual, double tolerance) {
-    return abs(actual - expected) / expected < tolerance ||
-        Double.valueOf(expected).equals(Double.valueOf(actual));
-  }
-
-  private static Map<String, XySequence> generateActual(NamedLocation location) {
-
-    Site site = Site.builder().location(location.location()).build();
-
-    CalcConfig config = CalcConfig.copyOf(model.config())
-        .imts(IMTS)
-        .build();
-
-    Hazard hazard = HazardCalcs.hazard(
-        model,
-        config,
-        site,
-        exec);
-
-    Map<String, XySequence> xyMap = hazard.curves().entrySet().stream()
-        .collect(Collectors.toMap(
-            e -> e.getKey().toString(),
-            Entry::getValue));
-
-    return xyMap;
-  }
-
-  private static String resultFilename(
-      String modelName,
-      int year,
-      NamedLocation loc) {
-
-    return modelName + "-" + year + "-" + loc.name() + ".json";
-  }
-
-  private static Map<String, XySequence> readExpected(NamedLocation loc) {
-
-    String filename = resultFilename(MODEL_NAME_OUT, MODEL_YEAR, loc);
-    Path resultPath = DATA_PATH.resolve(filename);
-
-    JsonObject obj = null;
-    try (BufferedReader br = Files.newBufferedReader(resultPath)) {
-      obj = JsonParser.parseReader(br).getAsJsonObject();
-    } catch (IOException ioe) {
-      throw new RuntimeException(ioe);
-    }
-
-    Type curveDataType = new TypeToken<Map<String, Curve>>() {}.getType();
-    Map<String, Curve> curveMap = GSON.fromJson(obj, curveDataType);
-    Map<String, XySequence> xyMap = curveMap.entrySet().stream()
-        .collect(Collectors.toMap(
-            Entry::getKey,
-            e -> XySequence.create(e.getValue().xs, e.getValue().ys)));
-    return xyMap;
-  }
-
-  private static class Curve {
-    double[] xs;
-    double[] ys;
-
-    @SuppressWarnings("unused")
-    Curve(double[] xs, double[] ys) {
-      this.xs = xs;
-      this.ys = ys;
-    }
-  }
-
-  private static void writeExpecteds(
-      String modelName,
-      int year,
-      List<NamedLocation> locations) throws IOException {
-
-    for (NamedLocation location : locations) {
-      // String json = generateActual(model, location);
-      Map<String, XySequence> xyMap = generateActual(location);
-      String json = GSON.toJson(xyMap);
-      writeExpected(modelName, year, location, json);
-    }
-  }
-
-  private static void writeExpected(
-      String modelName,
-      int year,
-      NamedLocation loc,
-      String json) throws IOException {
-
-    String filename = resultFilename(modelName, year, loc);
-    Path resultPath = DATA_PATH.resolve(filename);
-    Files.write(resultPath, json.getBytes());
-  }
-
-  public static void main(String[] args) throws IOException {
-
-    /* Initialize and shut down executor to generate results. */
-    setUpBeforeClass();
-
-    writeExpecteds(MODEL_NAME_OUT, MODEL_YEAR, SITES);
-
-    tearDownAfterClass();
-  }
-
-}
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsHawaii.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsHawaii.java
deleted file mode 100644
index 6d184fea8d2e93f86538af6d9cfa22d8e9207d61..0000000000000000000000000000000000000000
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsHawaii.java
+++ /dev/null
@@ -1,243 +0,0 @@
-package gov.usgs.earthquake.nshmp.model;
-
-import static gov.usgs.earthquake.nshmp.gmm.Imt.PGA;
-import static gov.usgs.earthquake.nshmp.gmm.Imt.SA0P2;
-import static gov.usgs.earthquake.nshmp.gmm.Imt.SA1P0;
-import static gov.usgs.earthquake.nshmp.gmm.Imt.SA5P0;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.HILO_HI;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.HONOLULU_HI;
-import static gov.usgs.earthquake.nshmp.site.NshmpSite.KAILUA_KONA_HI;
-import static java.lang.Math.abs;
-import static org.junit.jupiter.api.Assertions.assertArrayEquals;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
-
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-
-import gov.usgs.earthquake.nshmp.NamedLocation;
-import gov.usgs.earthquake.nshmp.calc.CalcConfig;
-import gov.usgs.earthquake.nshmp.calc.Hazard;
-import gov.usgs.earthquake.nshmp.calc.HazardCalcs;
-import gov.usgs.earthquake.nshmp.calc.Site;
-import gov.usgs.earthquake.nshmp.data.XySequence;
-import gov.usgs.earthquake.nshmp.geo.Location;
-import gov.usgs.earthquake.nshmp.gmm.Imt;
-
-/**
- * Class for end-to-end tests of hazard calculations. These tests require
- * significant system resources to load source models, and source models are
- * required to be in adjacent repositories. These tests should be run
- * frequently, but not necessarily as part of continuous integration. Needs
- * parameterization and additional regions.
- *
- * @author U.S. Geological Survey
- */
-class NshmTestsHawaii {
-
-  private static final double TOLERANCE = 1e-12;
-
-  private static final List<NamedLocation> SITES = List.of(
-      HILO_HI,
-      HONOLULU_HI,
-      KAILUA_KONA_HI);
-
-  private static final Set<Imt> IMTS = EnumSet.of(PGA, SA0P2, SA1P0, SA5P0);
-
-  private static final String MODEL_NAME = "nshm-hawaii";
-  private static final int MODEL_YEAR = 2021;
-  private static final Path MODEL_PATH = Paths.get("../" + MODEL_NAME);
-  private static final Path DATA_PATH = Paths.get("src/test/resources/e2e");
-
-  private static final Gson GSON = new GsonBuilder()
-      .setPrettyPrinting()
-      .create();
-
-  private static ExecutorService exec;
-  private static HazardModel model;
-  static Map<Location, Map<String, XySequence>> expecteds;
-
-  @BeforeAll
-  static void setUpBeforeClass() {
-    model = ModelLoader.load(MODEL_PATH);
-    int cores = Runtime.getRuntime().availableProcessors();
-    exec = Executors.newFixedThreadPool(cores);
-  }
-
-  @AfterAll
-  static void tearDownAfterClass() {
-    exec.shutdown();
-  }
-
-  @ParameterizedTest
-  @MethodSource("siteStream")
-  final void testLocation(NamedLocation site) {
-    compareCurves(site);
-  }
-
-  private static Stream<NamedLocation> siteStream() {
-    return SITES.stream();
-  }
-
-  private static void compareCurves(NamedLocation location) {
-
-    // String actual = generateActual(model, location);
-    Map<String, XySequence> actual = generateActual(location);
-    // String expected = readExpected(modelName, year, location);
-    Map<String, XySequence> expected = readExpected(location);
-    // assertEquals(expected, actual);
-
-    assertEquals(expected.keySet(), actual.keySet());
-    for (String key : actual.keySet()) {
-      assertCurveEquals(expected.get(key), actual.get(key), TOLERANCE);
-    }
-  }
-
-  private static void assertCurveEquals(XySequence expected, XySequence actual, double tol) {
-
-    // IMLs close but not exact due to exp() transform
-    assertArrayEquals(
-        expected.xValues().toArray(),
-        actual.xValues().toArray());
-
-    double[] expectedYs = expected.yValues().toArray();
-    double[] actualYs = actual.yValues().toArray();
-
-    // absolute y-value difference relative to tolerance
-    assertArrayEquals(expectedYs, actualYs, tol);
-
-    // relative y-value difference relative to tolerance
-    for (int i = 0; i < expectedYs.length; i++) {
-      String message = String.format(
-          "arrays differ at [%s] expected:<[%s]> but was:<[%s]>",
-          i, expectedYs[i], actualYs[i]);
-      assertTrue(compare(expectedYs[i], actualYs[i], tol), message);
-    }
-  }
-
-  private static boolean compare(double expected, double actual, double tolerance) {
-    return abs(actual - expected) / expected < tolerance ||
-        Double.valueOf(expected).equals(Double.valueOf(actual));
-  }
-
-  private static Map<String, XySequence> generateActual(NamedLocation location) {
-
-    Site site = Site.builder().location(location.location()).build();
-
-    CalcConfig config = CalcConfig.copyOf(model.config())
-        .imts(IMTS)
-        .build();
-
-    Hazard hazard = HazardCalcs.hazard(
-        model,
-        config,
-        site,
-        exec);
-
-    Map<String, XySequence> xyMap = hazard.curves().entrySet().stream()
-        .collect(Collectors.toMap(
-            e -> e.getKey().toString(),
-            Entry::getValue));
-
-    return xyMap;
-  }
-
-  private static String resultFilename(
-      String modelName,
-      int year,
-      NamedLocation loc) {
-
-    return modelName + "-" + year + "-" + loc.name() + ".json";
-  }
-
-  private static Map<String, XySequence> readExpected(NamedLocation loc) {
-
-    String filename = resultFilename(MODEL_NAME, MODEL_YEAR, loc);
-    Path resultPath = DATA_PATH.resolve(filename);
-
-    JsonObject obj = null;
-    try (BufferedReader br = Files.newBufferedReader(resultPath)) {
-      obj = JsonParser.parseReader(br).getAsJsonObject();
-    } catch (IOException ioe) {
-      throw new RuntimeException(ioe);
-    }
-
-    Type curveDataType = new TypeToken<Map<String, Curve>>() {}.getType();
-    Map<String, Curve> curveMap = GSON.fromJson(obj, curveDataType);
-    Map<String, XySequence> xyMap = curveMap.entrySet().stream()
-        .collect(Collectors.toMap(
-            Entry::getKey,
-            e -> XySequence.create(e.getValue().xs, e.getValue().ys)));
-    return xyMap;
-  }
-
-  private static class Curve {
-    double[] xs;
-    double[] ys;
-
-    @SuppressWarnings("unused")
-    Curve(double[] xs, double[] ys) {
-      this.xs = xs;
-      this.ys = ys;
-    }
-  }
-
-  private static void writeExpecteds(
-      String modelName,
-      int year,
-      List<NamedLocation> locations) throws IOException {
-
-    for (NamedLocation location : locations) {
-      // String json = generateActual(model, location);
-      Map<String, XySequence> xyMap = generateActual(location);
-      String json = GSON.toJson(xyMap);
-      writeExpected(modelName, year, location, json);
-    }
-  }
-
-  private static void writeExpected(
-      String modelName,
-      int year,
-      NamedLocation loc,
-      String json) throws IOException {
-
-    String filename = resultFilename(modelName, year, loc);
-    Path resultPath = DATA_PATH.resolve(filename);
-    Files.write(resultPath, json.getBytes());
-  }
-
-  public static void main(String[] args) throws IOException {
-
-    /* Initialize and shut down executor to generate results. */
-    setUpBeforeClass();
-
-    writeExpecteds(MODEL_NAME, MODEL_YEAR, SITES);
-
-    tearDownAfterClass();
-  }
-
-}
diff --git a/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-ANCHORAGE_AK.json b/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-ANCHORAGE_AK.json
new file mode 100644
index 0000000000000000000000000000000000000000..ce8d5eccf4e91405438b36aa6c80456ededdec8e
--- /dev/null
+++ b/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-ANCHORAGE_AK.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      31.582813479978164,
+      22.54033364387775,
+      15.474210100724962,
+      10.182828417406599,
+      6.449603153163436,
+      3.874829200208182,
+      2.2578315032412437,
+      1.2502702512704735,
+      0.6635952894157522,
+      0.33280836493445576,
+      0.15563831840158654,
+      0.06651470349199638,
+      0.02533417582444492,
+      0.008344260242984129,
+      0.002281234081363036,
+      4.905099541703147E-4,
+      7.106680468777945E-5,
+      9.366482156055951E-6,
+      1.6221817886511806E-6,
+      3.9226735161194594E-8
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      4.713651705544555,
+      2.9771167603928865,
+      1.8080598979866713,
+      1.049232189094306,
+      0.5745133346292348,
+      0.2965581079080614,
+      0.14114739956608777,
+      0.0616792830031775,
+      0.02432167960093702,
+      0.008469514908333562,
+      0.0026380884660043595,
+      7.771803183244353E-4,
+      2.4109621062432486E-4,
+      8.540282815765788E-5,
+      2.773934692690547E-5,
+      7.245217414287302E-6,
+      1.0985610862830077E-6,
+      1.1695491939047677E-8,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      46.33660845379568,
+      35.52280261841515,
+      26.460679996194,
+      19.0418040937675,
+      13.188706864561727,
+      8.757919192102062,
+      5.55528392890878,
+      3.333708291389453,
+      1.8983397739576513,
+      1.0213892930604547,
+      0.5207239096916852,
+      0.2442406254825674,
+      0.10685463572633691,
+      0.04138335479680251,
+      0.014026251993902823,
+      0.003932391972808894,
+      8.504353337198989E-4,
+      1.196312819651676E-4,
+      7.655134432772623E-6,
+      4.304490387327915E-7
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      60.119622521836234,
+      48.04425720405304,
+      37.17240663973346,
+      27.9717157456693,
+      20.245073109499156,
+      14.233013615251446,
+      9.61464749848652,
+      6.202530152633508,
+      3.824754910688659,
+      2.2450721351219647,
+      1.2557452464723764,
+      0.6677198016325505,
+      0.33577887701720444,
+      0.15802262756809157,
+      0.06845320087983027,
+      0.026612603647860916,
+      0.009096214954311552,
+      0.0026387580725377407,
+      6.046929677379725E-4,
+      9.768057889123841E-5
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-FAIRBANKS_AK.json b/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-FAIRBANKS_AK.json
new file mode 100644
index 0000000000000000000000000000000000000000..b3d3bf5b9e93289484cba6d5495609c54d7ec873
--- /dev/null
+++ b/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-FAIRBANKS_AK.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      9.452114953583418,
+      6.706211439845269,
+      4.588978464279589,
+      3.0086416270027057,
+      1.8888243856382763,
+      1.1129215358345803,
+      0.6279206376020909,
+      0.332220059774106,
+      0.16720102553008417,
+      0.07959344247355069,
+      0.035704063629097754,
+      0.014866442273198568,
+      0.005594983703070449,
+      0.001829808225027442,
+      4.919055822903513E-4,
+      1.0079740988490108E-4,
+      1.2471146653182707E-5,
+      7.028286079911419E-7,
+      1.1301945596475977E-8,
+      0.0
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      1.9184256285352985,
+      1.2370238558137503,
+      0.7559151793391217,
+      0.43656870088267014,
+      0.23723764134229494,
+      0.12274497208407278,
+      0.06008774189656887,
+      0.028081099253699622,
+      0.012342813568242031,
+      0.004923500549112306,
+      0.001726822893898249,
+      5.104323001168673E-4,
+      1.1878210581315673E-4,
+      2.0703558458760174E-5,
+      2.229665505804166E-6,
+      1.600980995106592E-7,
+      3.0216427277983056E-9,
+      0.0,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      13.284064126608067,
+      9.853308437791233,
+      7.116796195810492,
+      4.983686137318458,
+      3.3755093861650907,
+      2.2042574688021577,
+      1.3827750966815877,
+      0.8244257926457782,
+      0.46754946881597914,
+      0.2503944977653115,
+      0.1266282126160816,
+      0.05844529093292019,
+      0.024745808652838867,
+      0.008960497515163373,
+      0.0026810937680349133,
+      6.060577052384319E-4,
+      9.024933719464243E-5,
+      6.041976941249439E-6,
+      9.93796451544733E-8,
+      0.0
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      17.300398191221607,
+      13.307293930796153,
+      9.902232049229973,
+      7.181330544933179,
+      5.023882976102353,
+      3.432899618436824,
+      2.265573659612581,
+      1.4342768435263218,
+      0.8702393842451819,
+      0.5021655036586723,
+      0.2747258474697794,
+      0.14154536651264943,
+      0.06797544452596316,
+      0.029863158310209095,
+      0.011642033780539348,
+      0.003845862387601881,
+      0.0010250902378172331,
+      2.0133713527376628E-4,
+      2.2690666096196468E-5,
+      8.717032628046811E-7
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-JUNEAU_AK.json b/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-JUNEAU_AK.json
new file mode 100644
index 0000000000000000000000000000000000000000..be87bc56bb1f6eb29871bb34122476e4745712dc
--- /dev/null
+++ b/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-JUNEAU_AK.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      4.5913719373307815,
+      3.1877577576389777,
+      2.097780831337861,
+      1.2957406821661408,
+      0.746984342811182,
+      0.38952695598943826,
+      0.18714214109949412,
+      0.08044324750221588,
+      0.03164279075694215,
+      0.011505242206800674,
+      0.003992742328799899,
+      0.0013499251795955987,
+      4.410966460474658E-4,
+      1.331099451711727E-4,
+      3.451133263715693E-5,
+      6.964165264154167E-6,
+      8.488121825346587E-7,
+      4.733287019248812E-8,
+      7.489127568967084E-10,
+      0.0
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      1.0253453315814594,
+      0.6496593903800941,
+      0.38310327563652,
+      0.20845682337708707,
+      0.10339733714093746,
+      0.04697449191854783,
+      0.01924142141387398,
+      0.007176804937656804,
+      0.002418954964373144,
+      7.20693762011093E-4,
+      1.8814545129396004E-4,
+      4.208574241297092E-5,
+      8.176307773909808E-6,
+      1.352471640818951E-6,
+      1.5251255599794662E-7,
+      1.0827724111704109E-8,
+      2.0187812412155862E-10,
+      0.0,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      6.068978404417162,
+      4.372877587721081,
+      2.96145914131037,
+      1.8705044928666466,
+      1.0987647948608863,
+      0.5997918227238853,
+      0.30474714783859264,
+      0.143437938591774,
+      0.06373152535013737,
+      0.027152772561542995,
+      0.011410993299024457,
+      0.004620895751111436,
+      0.001815109039587635,
+      6.31024145453754E-4,
+      1.8465069624275671E-4,
+      4.119810433576225E-5,
+      6.093004688366109E-6,
+      4.066762292155661E-7,
+      6.639809776402779E-9,
+      0.0
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      7.52383366292991,
+      5.754229594765265,
+      4.144523559032874,
+      2.8176141397464365,
+      1.7789562600717859,
+      1.0591948150947947,
+      0.5873209892512312,
+      0.30211681938077767,
+      0.14566157672805446,
+      0.06635479340806372,
+      0.029195930933663503,
+      0.012621055900268078,
+      0.005362098833654412,
+      0.0021860669874765844,
+      8.17623309229938E-4,
+      2.638499963322621E-4,
+      6.926088859606785E-5,
+      1.3459661188717969E-5,
+      1.5087889923811794E-6,
+      5.8458404871550405E-8
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-KODIAK_AK.json b/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-KODIAK_AK.json
new file mode 100644
index 0000000000000000000000000000000000000000..1504167f6d312e13dc6c5ccb7495fa819b77f383
--- /dev/null
+++ b/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-KODIAK_AK.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      26.546661954616766,
+      17.459650298624737,
+      11.084965414334418,
+      6.795769566261186,
+      4.041809748369929,
+      2.284910900383992,
+      1.2521375077588737,
+      0.6475656424103889,
+      0.31874945539648736,
+      0.14746804997264432,
+      0.06374560849364301,
+      0.0255672657223487,
+      0.009473051553434959,
+      0.003243586632725043,
+      0.0010340415093725676,
+      3.1275997187537626E-4,
+      8.594852635443768E-5,
+      2.1434933824452506E-5,
+      4.196826749744855E-6,
+      1.8727466634359004E-7
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      3.854804376937343,
+      2.364379185902818,
+      1.3821499030867548,
+      0.7633730877420555,
+      0.39287613743438665,
+      0.18898207211847512,
+      0.08390418539943265,
+      0.03503544780269543,
+      0.013992259926570478,
+      0.005483373586317798,
+      0.002220171981130068,
+      9.498255878361635E-4,
+      4.099908166863419E-4,
+      1.6680927215134974E-4,
+      5.663555747494913E-5,
+      1.5303011320298508E-5,
+      2.445330361266734E-6,
+      4.355936584326965E-8,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      38.17234655735214,
+      26.49101606379142,
+      17.663262208614288,
+      11.311465791849193,
+      6.988262252201193,
+      4.17945057323202,
+      2.4210383483389335,
+      1.3446006826080403,
+      0.7170897677723416,
+      0.36421959456743086,
+      0.17622080748206914,
+      0.07866237753719352,
+      0.03299438003037053,
+      0.012420344249091962,
+      0.004203999937295219,
+      0.0012386815209033527,
+      3.129627579643493E-4,
+      6.605058658545654E-5,
+      1.1958724994045592E-5,
+      1.666631671207467E-6
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      54.507311979260805,
+      40.244806902889195,
+      28.30171628879847,
+      19.139647394512128,
+      12.347254701618091,
+      7.770072748415585,
+      4.738914537317213,
+      2.7948688831579833,
+      1.5979478629398678,
+      0.8795385346624696,
+      0.464719700690909,
+      0.23411222392624056,
+      0.11152929527402436,
+      0.049726179214811754,
+      0.02050447915506657,
+      0.0077035281128931266,
+      0.002629422657576131,
+      8.134129400120383E-4,
+      2.2596862585578324E-4,
+      5.689653033230468E-5
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-VALDEZ_AK.json b/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-VALDEZ_AK.json
new file mode 100644
index 0000000000000000000000000000000000000000..295cf0b5cebb329c11e5b382dd7cbd4eaeb3bf31
--- /dev/null
+++ b/src/test/resources/e2e/nshm-alaska-2023/nshm-alaska-2023-2023-VALDEZ_AK.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      14.762493063508535,
+      10.035995231798612,
+      6.556325924894737,
+      4.091869128752166,
+      2.4433246887900064,
+      1.368448163344026,
+      0.7362727316862255,
+      0.3726253151479264,
+      0.18045140978368018,
+      0.08324161723329056,
+      0.036530076560370155,
+      0.015138238886031097,
+      0.005865786022644363,
+      0.002100774108251156,
+      6.934850674702332E-4,
+      2.154861820204415E-4,
+      6.179626325702729E-5,
+      1.647076170321766E-5,
+      3.656119431379834E-6,
+      3.0846353935855177E-7
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      2.561068711379729,
+      1.5796610981359254,
+      0.9241851752832643,
+      0.510499546540395,
+      0.26419032512059154,
+      0.12936999343141448,
+      0.059494484136708936,
+      0.026089994832228968,
+      0.010936401864297195,
+      0.004384495443428714,
+      0.0017265312671550285,
+      6.916426859739275E-4,
+      2.83171175679534E-4,
+      1.1473949661541756E-4,
+      4.0481988720243455E-5,
+      1.1786546791456406E-5,
+      2.3469927190508737E-6,
+      7.645970101220592E-8,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      18.656234425311315,
+      13.225956628182368,
+      9.151707985681867,
+      6.148262039235704,
+      4.0027339504076025,
+      2.5204316993495857,
+      1.5308821379071518,
+      0.8871340321837551,
+      0.49094381766239176,
+      0.2575309154022499,
+      0.12814136421270464,
+      0.05860837911729966,
+      0.02500166184557037,
+      0.009452675419088034,
+      0.0031558300786874126,
+      9.024774578774151E-4,
+      2.2139445814584955E-4,
+      4.794864398530267E-5,
+      9.983740977802629E-6,
+      1.745023365440162E-6
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      26.372435877966993,
+      19.447764066423588,
+      13.900222661193535,
+      9.702611883068098,
+      6.538408245875219,
+      4.315703369680325,
+      2.7582056503639407,
+      1.6960189793166207,
+      1.0031907147799508,
+      0.5667522515914662,
+      0.30533047172102024,
+      0.15619418989992767,
+      0.07541669411401598,
+      0.03401715730737343,
+      0.014128278932822112,
+      0.005303281094011015,
+      0.00179062624386991,
+      5.46656569308932E-4,
+      1.5253233886997755E-4,
+      4.0517273878088426E-5
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-BOSTON_MA.json b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-BOSTON_MA.json
similarity index 58%
rename from src/test/resources/e2e/nshm-conus-2018-BOSTON_MA.json
rename to src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-BOSTON_MA.json
index cd25c781fbd2acfd900512de86d4343324becdd0..211a5abfcb496f1befae72517bf4c3b7bce77a03 100644
--- a/src/test/resources/e2e/nshm-conus-2018-BOSTON_MA.json
+++ b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-BOSTON_MA.json
@@ -3,52 +3,52 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
-      0.02078455097994014,
-      0.013752036153143975,
+      0.020784550979940128,
+      0.013752036153143974,
       0.008853912425965713,
-      0.005504502737593541,
-      0.0032956032209899913,
-      0.001851496392326522,
-      9.93143597796057E-4,
-      4.956595518220795E-4,
-      2.3401548992797768E-4,
-      1.0471944598011259E-4,
-      4.5084212737722855E-5,
-      1.8896301560235415E-5,
+      0.005504502737593538,
+      0.0032956032209899917,
+      0.0018514963923265217,
+      9.931435977960567E-4,
+      4.956595518220794E-4,
+      2.3401548992797762E-4,
+      1.0471944598011255E-4,
+      4.508421273772284E-5,
+      1.889630156023541E-5,
       7.725874681605789E-6,
-      3.039143578552158E-6,
-      1.1170515811344104E-6,
-      3.745132401726646E-7,
-      1.0752962397804165E-7,
-      2.596070736658151E-8,
+      3.0391435785521572E-6,
+      1.1170515811344102E-6,
+      3.745132401726645E-7,
+      1.075296239780416E-7,
+      2.5960707366581502E-8,
       4.917918081492094E-9,
-      6.503383766857791E-10
+      6.50338376685779E-10
     ]
   },
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -70,25 +70,25 @@
     ],
     "ys": [
       0.003849668670011357,
-      0.0025078664183317764,
-      0.0015597948853785955,
-      9.157017059864715E-4,
-      5.001931310456336E-4,
+      0.002507866418331777,
+      0.0015597948853785957,
+      9.157017059864713E-4,
+      5.001931310456335E-4,
       2.547249918503188E-4,
       1.194486623970574E-4,
-      5.2327359356867026E-5,
-      2.1561183371151274E-5,
+      5.232735935686702E-5,
+      2.156118337115127E-5,
       8.4003477208669E-6,
-      3.1469958181727803E-6,
-      1.1420236854051995E-6,
+      3.14699581817278E-6,
+      1.142023685405199E-6,
       3.9303700685767165E-7,
-      1.2947742656347805E-7,
-      3.718668812692663E-8,
+      1.2947742656347803E-7,
+      3.7186688126926624E-8,
       9.324871744942211E-9,
-      1.8778829487123563E-9,
-      2.846632932077524E-10,
-      2.6974731510803602E-11,
-      1.0385526508492285E-12
+      1.877882948712356E-9,
+      2.8466329320775234E-10,
+      2.6974731510803595E-11,
+      1.0385526508492283E-12
     ]
   },
   "Peak Ground Acceleration": {
@@ -107,33 +107,33 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
     "ys": [
-      0.039154336261104566,
-      0.028874987776381145,
+      0.03915433626110455,
+      0.028874987776381138,
       0.020883581441243287,
-      0.014675088491569479,
+      0.014675088491569475,
       0.009966398305490464,
-      0.006525399875535823,
-      0.004122194389111176,
+      0.006525399875535824,
+      0.0041221943891111765,
       0.0025039012846601923,
       0.0014759816292745382,
-      8.455590549998983E-4,
-      4.744378692952328E-4,
-      2.5614908673281055E-4,
+      8.455590549998979E-4,
+      4.7443786929523266E-4,
+      2.5614908673281044E-4,
       1.357929724979682E-4,
-      6.854218948534535E-5,
-      3.291803684798866E-5,
-      1.4569587193494361E-5,
-      5.782794746110382E-6,
-      1.9737183250309452E-6,
-      5.657594675445636E-7,
+      6.854218948534532E-5,
+      3.291803684798865E-5,
+      1.4569587193494355E-5,
+      5.782794746110381E-6,
+      1.9737183250309444E-6,
+      5.657594675445634E-7,
       1.2462940285422407E-7
     ]
   },
@@ -162,24 +162,24 @@
     ],
     "ys": [
       0.06054799387340501,
-      0.045010937165688894,
-      0.032384225534707246,
-      0.022605947101161122,
-      0.015060131175111444,
-      0.009690757366506481,
+      0.04501093716568888,
+      0.03238422553470724,
+      0.022605947101161115,
+      0.01506013117511144,
+      0.009690757366506483,
       0.005957079199326996,
-      0.003490107511158219,
-      0.001962702434309726,
-      0.0010598138716072614,
-      5.526846406248315E-4,
-      2.7876439975788514E-4,
+      0.00349010751115822,
+      0.0019627024343097255,
+      0.0010598138716072611,
+      5.526846406248314E-4,
+      2.787643997578851E-4,
       1.3582948573407556E-4,
-      6.359388081275608E-5,
-      2.8287825293638217E-5,
-      1.1707073491487452E-5,
-      4.419923256430148E-6,
-      1.4745471754128646E-6,
-      4.1424535992947296E-7,
+      6.359388081275606E-5,
+      2.8287825293638214E-5,
+      1.1707073491487447E-5,
+      4.4199232564301465E-6,
+      1.4745471754128641E-6,
+      4.1424535992947286E-7,
       9.342364439170645E-8
     ]
   }
diff --git a/src/test/resources/e2e/nshm-conus-2018-CHICAGO_IL.json b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-CHICAGO_IL.json
similarity index 57%
rename from src/test/resources/e2e/nshm-conus-2018-CHICAGO_IL.json
rename to src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-CHICAGO_IL.json
index 68072a3b07c47964b1c8d8be6ac1212986120a0c..65fc783b780d917aabc13b7bf65422ee05d0ee47 100644
--- a/src/test/resources/e2e/nshm-conus-2018-CHICAGO_IL.json
+++ b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-CHICAGO_IL.json
@@ -3,52 +3,52 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
-      0.01767550023787113,
-      0.011804993270225165,
-      0.007916670756587606,
-      0.0053491472480445695,
-      0.003631390427708423,
-      0.002384405538478485,
+      0.01767550023787112,
+      0.011804993270225161,
+      0.007916670756587604,
+      0.00534914724804457,
+      0.003631390427708422,
+      0.0023844055384784854,
       0.0014870231028831253,
-      8.355484214788523E-4,
-      4.1460657776932683E-4,
-      1.757911127856578E-4,
-      6.240935342700552E-5,
-      1.8240832144136128E-5,
-      4.414927964063778E-6,
-      9.994457044956116E-7,
-      2.4855133647506633E-7,
+      8.355484214788522E-4,
+      4.146065777693268E-4,
+      1.7579111278565783E-4,
+      6.240935342700551E-5,
+      1.824083214413613E-5,
+      4.4149279640637774E-6,
+      9.994457044956118E-7,
+      2.485513364750663E-7,
       7.726459746150786E-8,
-      2.121042318488014E-8,
-      4.860565864414978E-9,
-      8.64105244261508E-10,
-      1.0633132855584107E-10
+      2.1210423184880136E-8,
+      4.860565864414977E-9,
+      8.641052442615079E-10,
+      1.0633132855584105E-10
     ]
   },
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -71,23 +71,23 @@
     "ys": [
       0.004904504983066266,
       0.0037556118245414046,
-      0.0029006854981177593,
-      0.002197256906365074,
-      0.0015714972511203787,
+      0.002900685498117759,
+      0.0021972569063650723,
+      0.0015714972511203793,
       0.0010317853455482512,
-      5.988137176440332E-4,
+      5.988137176440331E-4,
       2.999898092710794E-4,
-      1.2636087757687215E-4,
-      4.334153727062957E-5,
-      1.1727951025836871E-5,
-      2.383247006424206E-6,
-      3.5209264942037673E-7,
-      3.7851796592772213E-8,
-      5.963076928168122E-9,
+      1.2636087757687212E-4,
+      4.3341537270629574E-5,
+      1.1727951025836873E-5,
+      2.3832470064242068E-6,
+      3.5209264942037663E-7,
+      3.785179659277222E-8,
+      5.963076928168123E-9,
       1.4910332126633127E-9,
-      3.141788737237651E-10,
-      5.2511189664780556E-11,
-      5.968234937924545E-12,
+      3.14178873723765E-10,
+      5.251118966478055E-11,
+      5.968234937924543E-12,
       3.1469632224157163E-13
     ]
   },
@@ -107,34 +107,34 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
     "ys": [
-      0.022709150996398572,
-      0.015516400129389082,
+      0.02270915099639857,
+      0.01551640012938908,
       0.01063565058866354,
-      0.007250987342509733,
-      0.00484747526482874,
+      0.007250987342509732,
+      0.004847475264828738,
       0.0031114243186504235,
-      0.0018782779132334622,
-      0.0010500224979932131,
+      0.0018782779132334618,
+      0.001050022497993213,
       5.534113089259502E-4,
       2.81605357092695E-4,
-      1.4369489671881903E-4,
+      1.4369489671881906E-4,
       7.346403339083293E-5,
-      3.8325297999058965E-5,
-      1.9431569974270378E-5,
-      9.42159253961068E-6,
+      3.832529799905896E-5,
+      1.943156997427037E-5,
+      9.421592539610684E-6,
       4.1976884388553816E-6,
-      1.6696279770654772E-6,
-      5.688244700978395E-7,
-      1.6230550529800464E-7,
-      3.549954903295298E-8
+      1.669627977065477E-6,
+      5.688244700978394E-7,
+      1.6230550529800462E-7,
+      3.5499549032952975E-8
     ]
   },
   "0.20 Second Spectral Acceleration": {
@@ -161,26 +161,26 @@
       1.998773638612381
     ],
     "ys": [
-      0.04184772415672415,
-      0.02851981218255562,
+      0.04184772415672416,
+      0.028519812182555622,
       0.01902862263652819,
-      0.012597694078764635,
-      0.008183488070776039,
-      0.005256326568188244,
-      0.0032378832457639964,
-      0.0018635316801681953,
-      9.90711951482253E-4,
-      4.830130551236983E-4,
-      2.1935879450693264E-4,
+      0.012597694078764632,
+      0.008183488070776037,
+      0.0052563265681882425,
+      0.003237883245763997,
+      0.001863531680168195,
+      9.907119514822526E-4,
+      4.830130551236982E-4,
+      2.1935879450693258E-4,
       9.551470151347582E-5,
-      4.1247826827249706E-5,
+      4.124782682724971E-5,
       1.7924007974639768E-5,
-      7.691633829460732E-6,
-      3.129256114185964E-6,
+      7.69163382946073E-6,
+      3.129256114185963E-6,
       1.1644839692951632E-6,
-      3.8155425174464243E-7,
-      1.0444941528551557E-7,
-      2.265638077580196E-8
+      3.815542517446424E-7,
+      1.0444941528551554E-7,
+      2.2656380775801956E-8
     ]
   }
 }
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-LOS_ANGELES_CA.json b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-LOS_ANGELES_CA.json
similarity index 82%
rename from src/test/resources/e2e/nshm-conus-2018-LOS_ANGELES_CA.json
rename to src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-LOS_ANGELES_CA.json
index c22520b8f6aab09eaba96e4d4d8e32ef33a2686f..f83c052f3551b86ae63c3f78595cff562a2eb805 100644
--- a/src/test/resources/e2e/nshm-conus-2018-LOS_ANGELES_CA.json
+++ b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-LOS_ANGELES_CA.json
@@ -3,44 +3,44 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
       0.6366574720501088,
-      0.47180374791963997,
+      0.4718037479196399,
       0.336364557146257,
-      0.2311796226192394,
+      0.23117962261923944,
       0.15426255108470943,
       0.09868641697941964,
-      0.06168226983900997,
+      0.061682269839009964,
       0.037095482704419605,
       0.021775137700280892,
       0.012418053525144834,
       0.006834724125143083,
       0.0035759571677002966,
       0.0017322386889934245,
-      7.490722245704205E-4,
+      7.490722245704206E-4,
       2.781308992738419E-4,
-      8.55525189246937E-5,
+      8.555251892469371E-5,
       1.9638736883809428E-5,
-      2.96393173511507E-6,
+      2.9639317351150696E-6,
       2.2713550419680115E-7,
       2.172828515836533E-9
     ]
@@ -48,7 +48,7 @@
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -69,24 +69,24 @@
       0.7929925155296614
     ],
     "ys": [
-      0.16844377244854847,
+      0.1684437724485485,
       0.11829589663275786,
-      0.08101452065128258,
+      0.08101452065128259,
       0.05406282717487072,
       0.035127313944556586,
       0.02246250359719528,
       0.014022392026120642,
-      0.008468146251691492,
+      0.008468146251691493,
       0.004802617000237273,
       0.0024617049089227135,
       0.0011102558974719061,
       4.306689571156029E-4,
       1.3931953053831388E-4,
-      3.7833745729080926E-5,
+      3.783374572908093E-5,
       8.044063188459818E-6,
       1.3835389066707896E-6,
       1.5518435606411874E-7,
-      7.36238777232291E-9,
+      7.362387772322911E-9,
       8.557445185989779E-13,
       0.0
     ]
@@ -107,10 +107,10 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
@@ -118,15 +118,15 @@
       0.7850465833348313,
       0.6149388088135578,
       0.46880770081149936,
-      0.348104179748503,
-      0.25232659558218706,
+      0.34810417974850305,
+      0.252326595582187,
       0.17814867226367861,
       0.12154240052962642,
       0.07901532677500141,
       0.04903288877565289,
       0.02903200372417984,
       0.016462922915925538,
-      0.00872825444898973,
+      0.008728254448989729,
       0.004380357672598145,
       0.001967488906616791,
       7.622024986858485E-4,
@@ -161,23 +161,23 @@
       1.998773638612381
     ],
     "ys": [
-      0.9277678999858486,
-      0.753748033038108,
-      0.5931923233025838,
+      0.9277678999858487,
+      0.7537480330381081,
+      0.5931923233025839,
       0.45540482519284387,
       0.3391134734752599,
-      0.24809053741765913,
+      0.2480905374176591,
       0.1766116798966622,
-      0.12123002464436061,
+      0.1212300246443606,
       0.07985280215586492,
       0.050147609948821836,
       0.030081503068165788,
       0.01724538444217736,
-      0.009432364207667705,
+      0.009432364207667703,
       0.004883172427187242,
       0.002333377346825734,
       9.819488750632801E-4,
-      3.476070212087309E-4,
+      3.4760702120873095E-4,
       9.771982942272988E-5,
       1.9713363600257578E-5,
       2.3576513888748996E-6
diff --git a/src/test/resources/e2e/nshm-conus-2018-NEW_MADRID_MO.json b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-NEW_MADRID_MO.json
similarity index 63%
rename from src/test/resources/e2e/nshm-conus-2018-NEW_MADRID_MO.json
rename to src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-NEW_MADRID_MO.json
index 2345a4a769fe0d63556ecbaeed31aa4f238a350c..79d39bb03e3385d31738ac99684c1228b9cec86b 100644
--- a/src/test/resources/e2e/nshm-conus-2018-NEW_MADRID_MO.json
+++ b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-NEW_MADRID_MO.json
@@ -3,52 +3,52 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
-      0.05460474620644813,
+      0.05460474620644812,
       0.039322200263679656,
       0.027742521888583595,
       0.019256487920663257,
-      0.013309032474447959,
+      0.013309032474447957,
       0.009158100387208452,
-      0.0064699544926735564,
-      0.004711825464791655,
+      0.006469954492673557,
+      0.004711825464791654,
       0.00361441996860359,
-      0.0029237508993505794,
-      0.002458976181859003,
-      0.0020724707675324793,
-      0.0016635058660181773,
+      0.0029237508993505785,
+      0.0024589761818590043,
+      0.002072470767532479,
+      0.0016635058660181767,
       0.001206920974532014,
-      7.58005194921214E-4,
-      4.028136886385925E-4,
-      1.7473743872927871E-4,
+      7.580051949212136E-4,
+      4.0281368863859246E-4,
+      1.747374387292787E-4,
       6.14366486371895E-5,
       1.660370716466393E-5,
-      3.2819885795529328E-6
+      3.281988579552932E-6
     ]
   },
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -69,24 +69,24 @@
       0.7929925155296614
     ],
     "ys": [
-      0.011183350950193821,
+      0.01118335095019382,
       0.00820850133786319,
-      0.0061259943786559495,
+      0.006125994378655951,
       0.004704029030923133,
-      0.0037445097750955785,
-      0.0031134253259270835,
+      0.003744509775095578,
+      0.0031134253259270826,
       0.0026896900327019677,
       0.0023879637030226153,
       0.002117544110718752,
-      0.0018011501748482462,
+      0.0018011501748482464,
       0.0014173471729516552,
-      0.0010068130175955078,
+      0.001006813017595508,
       6.301951022408455E-4,
-      3.4447816991405093E-4,
+      3.44478169914051E-4,
       1.561396083486973E-4,
-      5.887416288449927E-5,
-      1.748301261392189E-5,
-      3.857677678049851E-6,
+      5.8874162884499284E-5,
+      1.7483012613921882E-5,
+      3.8576776780498505E-6,
       5.776336202494065E-7,
       3.6035648979050635E-8
     ]
@@ -107,34 +107,34 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
     "ys": [
       0.11111072621136198,
-      0.09432125494016415,
-      0.07822805599600462,
+      0.09432125494016416,
+      0.07822805599600459,
       0.06292369383675941,
-      0.048970144357273364,
-      0.036942153943163344,
+      0.04897014435727336,
+      0.03694215394316334,
       0.027163843299139248,
-      0.019537877568746243,
-      0.013915832488455515,
-      0.009887221698272164,
-      0.0070940413496668455,
-      0.005146435316179508,
+      0.01953787756874624,
+      0.013915832488455513,
+      0.009887221698272162,
+      0.007094041349666845,
+      0.0051464353161795075,
       0.003865608590322207,
-      0.0029837666408947206,
-      0.0023260711475453035,
-      0.0017237133487967339,
-      0.0011265388791854103,
-      6.015982295191782E-4,
-      2.5104779111283416E-4,
-      7.632592705118943E-5
+      0.00298376664089472,
+      0.002326071147545305,
+      0.0017237133487967337,
+      0.00112653887918541,
+      6.015982295191784E-4,
+      2.510477911128341E-4,
+      7.632592705118942E-5
     ]
   },
   "0.20 Second Spectral Acceleration": {
@@ -161,25 +161,25 @@
       1.998773638612381
     ],
     "ys": [
-      0.13557175676510386,
+      0.13557175676510383,
       0.11487697773688868,
-      0.09473336922159181,
+      0.0947333692215918,
       0.07576523916620488,
-      0.058061656399242885,
-      0.04307702076073272,
-      0.03089333087514904,
+      0.05806165639924289,
+      0.043077020760732714,
+      0.030893330875149033,
       0.02154336192618488,
-      0.014802677054253843,
-      0.01011911451019241,
-      0.006988258677940676,
+      0.01480267705425384,
+      0.010119114510192404,
+      0.006988258677940673,
       0.00495471722552012,
-      0.003663126515262553,
-      0.002832444396585898,
-      0.002237940845752877,
+      0.003663126515262554,
+      0.002832444396585899,
+      0.002237940845752876,
       0.0017164930070629656,
-      0.0011926180558950762,
-      6.965535536645009E-4,
-      3.211131756404801E-4,
+      0.0011926180558950769,
+      6.965535536645008E-4,
+      3.2111317564048023E-4,
       1.1269789534198825E-4
     ]
   }
diff --git a/src/test/resources/e2e/nshm-conus-2018-NEW_YORK_NY.json b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-NEW_YORK_NY.json
similarity index 59%
rename from src/test/resources/e2e/nshm-conus-2018-NEW_YORK_NY.json
rename to src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-NEW_YORK_NY.json
index 5ba624ee1ed64628c767732885b4b8bdf22e27aa..8e052db4a28ff6c40e5df1186c6cf559f4b8c4ea 100644
--- a/src/test/resources/e2e/nshm-conus-2018-NEW_YORK_NY.json
+++ b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-NEW_YORK_NY.json
@@ -3,52 +3,52 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
-      0.018666421015364296,
-      0.012277714382170502,
+      0.018666421015364292,
+      0.012277714382170499,
       0.007819753747405414,
-      0.0047835883866622865,
-      0.0028112191687725907,
+      0.004783588386662286,
+      0.0028112191687725894,
       0.0015540453407317347,
-      8.285075887238436E-4,
+      8.285075887238437E-4,
       4.1827330817572424E-4,
-      2.0477961806545264E-4,
-      9.76841382864806E-5,
-      4.582979651500823E-5,
+      2.047796180654526E-4,
+      9.768413828648056E-5,
+      4.5829796515008224E-5,
       2.1108151934584483E-5,
       9.40307880873417E-6,
-      3.952177823009206E-6,
-      1.5239368107090302E-6,
-      5.283693302216128E-7,
-      1.5532448868679193E-7,
-      3.807576669004164E-8,
+      3.952177823009205E-6,
+      1.52393681070903E-6,
+      5.283693302216127E-7,
+      1.553244886867919E-7,
+      3.807576669004163E-8,
       7.285190754922316E-9,
-      9.713305930824852E-10
+      9.71330593082485E-10
     ]
   },
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -70,25 +70,25 @@
     ],
     "ys": [
       0.0036839290291613555,
-      0.002335050751486981,
+      0.0023350507514869807,
       0.001402579620737425,
-      7.930112908299476E-4,
-      4.1808903382999877E-4,
-      2.0733134457052304E-4,
+      7.930112908299474E-4,
+      4.1808903382999866E-4,
+      2.0733134457052307E-4,
       9.623213274255234E-5,
-      4.279209350393817E-5,
+      4.2792093503938167E-5,
       1.8488428033840786E-5,
-      7.785121676935125E-6,
+      7.785121676935123E-6,
       3.2094244668835695E-6,
-      1.2788721198896172E-6,
-      4.7640365740538307E-7,
-      1.651037823961913E-7,
-      4.9341854768598423E-8,
-      1.2738983551119943E-8,
-      2.6202525850572688E-9,
-      4.0485837495960446E-10,
-      3.904486628199482E-11,
-      1.5324451927867105E-12
+      1.278872119889617E-6,
+      4.764036574053829E-7,
+      1.6510378239619124E-7,
+      4.934185476859842E-8,
+      1.2738983551119938E-8,
+      2.6202525850572684E-9,
+      4.048583749596045E-10,
+      3.9044866281994814E-11,
+      1.53244519278671E-12
     ]
   },
   "Peak Ground Acceleration": {
@@ -107,31 +107,31 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
     "ys": [
-      0.029878942979656188,
-      0.02169931498570595,
-      0.015627345176841466,
-      0.011107491120984697,
-      0.007776586292284123,
-      0.005349775331002555,
+      0.029878942979656185,
+      0.021699314985705948,
+      0.01562734517684146,
+      0.011107491120984695,
+      0.0077765862922841225,
+      0.0053497753310025545,
       0.0036068398003160375,
-      0.00236476621256421,
-      0.0015114836562529481,
-      9.383042482967955E-4,
-      5.672612883032052E-4,
-      3.2775630190425736E-4,
-      1.8379026685332687E-4,
+      0.002364766212564209,
+      0.0015114836562529477,
+      9.383042482967953E-4,
+      5.67261288303205E-4,
+      3.277563019042573E-4,
+      1.837902668533268E-4,
       9.707147245294277E-5,
-      4.8216709391054424E-5,
+      4.821670939105442E-5,
       2.1867540425618328E-5,
-      8.83267345573992E-6,
+      8.832673455739918E-6,
       3.054523154324783E-6,
       8.84797873298568E-7,
       1.9672786782893157E-7
@@ -162,25 +162,25 @@
     ],
     "ys": [
       0.048301983959234095,
-      0.0350497356176406,
-      0.024744052454742888,
-      0.017095234304717735,
-      0.01141511174006545,
-      0.007482577963101015,
+      0.03504973561764059,
+      0.02474405245474288,
+      0.01709523430471773,
+      0.011415111740065452,
+      0.007482577963101016,
       0.0047698738556462535,
-      0.0029480912847476026,
-      0.0017725798590443338,
+      0.002948091284747602,
+      0.0017725798590443333,
       0.0010323738247512593,
-      5.823000408387339E-4,
-      3.1694058457143036E-4,
-      1.656074574036077E-4,
-      8.238484623559816E-5,
+      5.823000408387338E-4,
+      3.169405845714303E-4,
+      1.6560745740360768E-4,
+      8.238484623559815E-5,
       3.852324830287548E-5,
-      1.657549901909999E-5,
-      6.439186747078616E-6,
-      2.1925820654928877E-6,
-      6.249719391706649E-7,
-      1.4238886738032344E-7
+      1.6575499019099988E-5,
+      6.439186747078615E-6,
+      2.192582065492888E-6,
+      6.249719391706647E-7,
+      1.4238886738032342E-7
     ]
   }
 }
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-RENO_NV.json b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-RENO_NV.json
similarity index 81%
rename from src/test/resources/e2e/nshm-conus-2018-RENO_NV.json
rename to src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-RENO_NV.json
index 0bab9a4167f4ae414456339ecd5d6e27f182b34f..64cf362a87bd424cc01dfa35c5fc5910b4eeee95 100644
--- a/src/test/resources/e2e/nshm-conus-2018-RENO_NV.json
+++ b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-RENO_NV.json
@@ -3,42 +3,42 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
-      0.5639424382793682,
+      0.5639424382793681,
       0.41970430872704,
-      0.2996355631700337,
+      0.29963556317003365,
       0.20436506496344023,
       0.13386011296908937,
       0.08340469061324253,
       0.05072763584783538,
-      0.02970332088645175,
+      0.029703320886451754,
       0.016962428614047866,
-      0.009368748098138393,
+      0.009368748098138395,
       0.004942501068704084,
       0.002420101079214425,
-      0.0010564988095787106,
+      0.0010564988095787104,
       3.945561117465654E-4,
       1.2048922319737728E-4,
-      2.8266770250121335E-5,
+      2.8266770250121338E-5,
       4.252380705836177E-6,
       4.4029329263288646E-7,
       2.573585831849357E-8,
@@ -48,7 +48,7 @@
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -69,23 +69,23 @@
       0.7929925155296614
     ],
     "ys": [
-      0.16195200240025112,
+      0.1619520024002511,
       0.11197070315750861,
       0.07461644808670248,
       0.04806931482649302,
-      0.029904421907731293,
-      0.01809720511043038,
+      0.029904421907731286,
+      0.018097205110430375,
       0.010526649862628145,
       0.0058497036090659794,
-      0.003024869157973338,
+      0.0030248691579733374,
       0.001398899091725516,
       5.607903420664931E-4,
       1.884917390363045E-4,
       5.034839107343867E-5,
-      1.0331505761726529E-5,
+      1.033150576172653E-5,
       1.5403732253339458E-6,
       1.766940560506774E-7,
-      9.230578884022922E-9,
+      9.230578884022919E-9,
       0.0,
       0.0,
       0.0
@@ -107,30 +107,30 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
     "ys": [
-      0.6547357887817037,
+      0.6547357887817038,
       0.5154175476805015,
       0.3956456162265481,
-      0.2946377853731455,
+      0.29463778537314556,
       0.21261726439098355,
       0.14856083770157558,
-      0.10023112298791949,
+      0.1002311229879195,
       0.06449394268051883,
       0.03938928323399141,
-      0.022644338964053448,
+      0.022644338964053445,
       0.012321069753420741,
       0.006191664090278571,
       0.0028672800399024167,
       0.001131585475187518,
       3.666664317975439E-4,
-      9.021209601637859E-5,
+      9.021209601637857E-5,
       1.523566711127091E-5,
       1.4539154793262797E-6,
       6.099357830874233E-8,
@@ -164,20 +164,20 @@
       0.7737520693137596,
       0.626158058671475,
       0.4943026693905384,
-      0.38152373161093633,
+      0.3815237316109364,
       0.2849928378328236,
-      0.20811270361164624,
+      0.20811270361164622,
       0.14726293268062962,
-      0.1003374121401908,
-      0.06562437576887946,
+      0.10033741214019079,
+      0.06562437576887947,
       0.04081755703105158,
       0.02407438562720991,
-      0.013446854247539834,
+      0.013446854247539832,
       0.007078613802080741,
       0.003434334658947344,
       0.0014729955574711105,
       5.304815215680369E-4,
-      1.5325010460188717E-4,
+      1.532501046018872E-4,
       3.2864405116884194E-5,
       4.5541957008082325E-6,
       3.3625843088903307E-7
diff --git a/src/test/resources/e2e/nshm-conus-2018-SALT_LAKE_CITY_UT.json b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-SALT_LAKE_CITY_UT.json
similarity index 65%
rename from src/test/resources/e2e/nshm-conus-2018-SALT_LAKE_CITY_UT.json
rename to src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-SALT_LAKE_CITY_UT.json
index b8b668efa388771d33b89ed4f18d16a53c073d05..f5f90240d59c510aae39e008a824eb94ef73d1c1 100644
--- a/src/test/resources/e2e/nshm-conus-2018-SALT_LAKE_CITY_UT.json
+++ b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-SALT_LAKE_CITY_UT.json
@@ -3,44 +3,44 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
       0.10141210582180435,
       0.07447849798602046,
       0.05330127231316856,
       0.037102818795138215,
-      0.025232028167263765,
-      0.01661034649634634,
-      0.010874067593129609,
+      0.025232028167263762,
+      0.016610346496346337,
+      0.010874067593129604,
       0.00708922479836808,
       0.004735625457686324,
-      0.003249464756093951,
-      0.002245495226811022,
-      0.0014914478772558575,
-      8.988552768687256E-4,
-      4.656680939512108E-4,
-      1.9882970591587768E-4,
-      6.785029212800548E-5,
-      1.6876651512201575E-5,
-      2.6537417417255936E-6,
+      0.0032494647560939506,
+      0.0022454952268110224,
+      0.0014914478772558568,
+      8.988552768687258E-4,
+      4.6566809395121077E-4,
+      1.9882970591587773E-4,
+      6.785029212800547E-5,
+      1.6876651512201572E-5,
+      2.653741741725593E-6,
       1.731813940276621E-7,
       1.0355704040041718E-10
     ]
@@ -48,7 +48,7 @@
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -69,26 +69,26 @@
       0.7929925155296614
     ],
     "ys": [
-      0.03338701576491687,
+      0.033387015764916865,
       0.02465096645560166,
       0.01764423071929716,
       0.012269680846161648,
       0.008337057201618096,
-      0.005635024432572457,
-      0.0037891327023550233,
+      0.005635024432572455,
+      0.003789132702355024,
       0.0025149123784953846,
-      0.0015863429059217115,
-      9.014315449747968E-4,
-      4.414029650416536E-4,
-      1.7921117169766217E-4,
-      5.754118100356993E-5,
-      1.4224526877692228E-5,
-      2.207856914416273E-6,
-      1.8880753843912258E-7,
+      0.0015863429059217106,
+      9.014315449747967E-4,
+      4.4140296504165366E-4,
+      1.7921117169766222E-4,
+      5.7541181003569944E-5,
+      1.422452687769223E-5,
+      2.2078569144162738E-6,
+      1.888075384391226E-7,
       2.916565870061635E-9,
-      1.3533194681297857E-11,
+      1.3533194681297855E-11,
       1.4761223207476851E-12,
-      7.365315902026219E-14
+      7.365315902026216E-14
     ]
   },
   "Peak Ground Acceleration": {
@@ -107,34 +107,34 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
     "ys": [
-      0.13047100258720734,
-      0.09849712329595019,
-      0.07246017969843056,
-      0.05191828655903307,
-      0.03636526505318484,
-      0.024993217741374765,
-      0.01690096807101634,
+      0.1304710025872074,
+      0.09849712329595017,
+      0.07246017969843055,
+      0.05191828655903308,
+      0.03636526505318483,
+      0.024993217741374762,
+      0.016900968071016344,
       0.011231650127527283,
       0.007452801108191979,
       0.005017181957434341,
-      0.003470567929844281,
-      0.0024023685398152327,
-      0.0016078002266633948,
+      0.0034705679298442814,
+      0.002402368539815233,
+      0.0016078002266633952,
       9.514053815001429E-4,
       4.656644721669267E-4,
       1.7536330043880214E-4,
-      4.811667218966291E-5,
+      4.811667218966292E-5,
       8.632653500921545E-6,
-      8.008388400062674E-7,
-      2.268010646406833E-8
+      8.008388400062673E-7,
+      2.2680106464068337E-8
     ]
   },
   "0.20 Second Spectral Acceleration": {
@@ -162,24 +162,24 @@
     ],
     "ys": [
       0.16740950916822125,
-      0.13018273718211873,
+      0.1301827371821187,
       0.09802333688436565,
       0.0720099099078939,
       0.05129669394322607,
-      0.03606585232915037,
-      0.02491600581620359,
+      0.036065852329150376,
+      0.024916005816203582,
       0.01691309964162624,
       0.011363408680915814,
       0.007619737320678116,
-      0.0051864199911304905,
-      0.003611556059854821,
+      0.00518641999113049,
+      0.0036115560598548218,
       0.00253928053666354,
-      0.0017305585661145017,
-      0.0010724055561078662,
-      5.639609734298516E-4,
-      2.39568674519544E-4,
-      7.88212371379923E-5,
-      1.8675841989591893E-5,
+      0.0017305585661145013,
+      0.0010724055561078668,
+      5.639609734298517E-4,
+      2.395686745195439E-4,
+      7.882123713799232E-5,
+      1.86758419895919E-5,
       2.701116080577684E-6
     ]
   }
diff --git a/src/test/resources/e2e/nshm-conus-2018-SAN_FRANCISCO_CA.json b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-SAN_FRANCISCO_CA.json
similarity index 82%
rename from src/test/resources/e2e/nshm-conus-2018-SAN_FRANCISCO_CA.json
rename to src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-SAN_FRANCISCO_CA.json
index 6e30c26a5c8734de58b750dc80b374cc0a842af2..f282faf7a36286b04287fab47a7626608bcfa154 100644
--- a/src/test/resources/e2e/nshm-conus-2018-SAN_FRANCISCO_CA.json
+++ b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-SAN_FRANCISCO_CA.json
@@ -3,33 +3,33 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
       0.5831008919911462,
       0.4284199090706749,
-      0.3043299517318651,
-      0.20991504534178368,
+      0.30432995173186517,
+      0.20991504534178365,
       0.14211631298661964,
       0.09374868521078619,
-      0.06138384495043732,
+      0.061383844950437326,
       0.039071093308164724,
       0.024201671562405724,
       0.014386438506911663,
@@ -48,7 +48,7 @@
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -69,18 +69,18 @@
       0.7929925155296614
     ],
     "ys": [
-      0.15758937503731726,
-      0.11247692685397596,
-      0.07946884297427434,
+      0.15758937503731724,
+      0.11247692685397598,
+      0.07946884297427433,
       0.05560574371886311,
       0.03824085383493095,
       0.02585465059626231,
-      0.017050534628279736,
+      0.01705053462827973,
       0.011010094459237604,
       0.006875269673181763,
-      0.004031893488663088,
-      0.002153405881721278,
-      0.0010132607735766973,
+      0.004031893488663087,
+      0.002153405881721273,
+      0.001013260773576697,
       4.0392561747766895E-4,
       1.357315165926373E-4,
       3.5070265791185964E-5,
@@ -107,17 +107,17 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
     "ys": [
       0.7094470259373502,
       0.5498428629048978,
-      0.4155123147834937,
+      0.41551231478349365,
       0.3063031193282665,
       0.22104888785899784,
       0.15688910340717468,
@@ -126,8 +126,8 @@
       0.04928602923975804,
       0.030791659709764246,
       0.018082373041434497,
-      0.009607207734429656,
-      0.004562768246986616,
+      0.009607207734429657,
+      0.004562768246986615,
       0.0017919912792970505,
       5.570645285749892E-4,
       1.2499276983585092E-4,
@@ -161,26 +161,26 @@
       1.998773638612381
     ],
     "ys": [
-      0.846343456814455,
-      0.6798282480043856,
+      0.8463434568144551,
+      0.6798282480043855,
       0.529575106126662,
       0.4029924331123037,
       0.2978878788706715,
       0.21720849261933428,
-      0.15561695133652087,
-      0.10937917498336787,
+      0.15561695133652084,
+      0.10937917498336788,
       0.07525155479744264,
       0.05001008517906983,
       0.031720239807918466,
-      0.018914948303394897,
+      0.018914948303394893,
       0.010396290099441215,
       0.005116134863810127,
       0.002168905715322163,
       7.537255830739884E-4,
       2.043519900756787E-4,
-      3.950315353965148E-5,
+      3.950315353965147E-5,
       4.114149996331726E-6,
-      1.1332666265240459E-7
+      1.1332666265240457E-7
     ]
   }
 }
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-SEATTLE_WA.json b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-SEATTLE_WA.json
similarity index 73%
rename from src/test/resources/e2e/nshm-conus-2018-SEATTLE_WA.json
rename to src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-SEATTLE_WA.json
index 8829099b790ff08a132d70589f2e0f688c11034b..84a5bf24f17ddea50e5bbda8089533bbabf23839 100644
--- a/src/test/resources/e2e/nshm-conus-2018-SEATTLE_WA.json
+++ b/src/test/resources/e2e/nshm-conus-2018/nshm-conus-2018-2018-SEATTLE_WA.json
@@ -3,41 +3,41 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
       0.18974076473276455,
       0.15035830377424855,
-      0.11450746102005707,
-      0.08372212205395724,
-      0.05905693494677333,
+      0.11450746102005706,
+      0.08372212205395722,
+      0.059056934946773325,
       0.03979043310304015,
-      0.026081869846344616,
-      0.016390117896193383,
-      0.009939769051733804,
-      0.005732292608201421,
-      0.003091115228735578,
-      0.0015239775147447624,
+      0.02608186984634462,
+      0.01639011789619338,
+      0.009939769051733806,
+      0.005732292608201422,
+      0.0030911152287355775,
+      0.0015239775147447628,
       6.709168675782273E-4,
       2.574847006859803E-4,
-      8.378741714286619E-5,
+      8.37874171428662E-5,
       2.251661394813441E-5,
       4.500727576177568E-6,
       6.144243207535918E-7,
@@ -48,7 +48,7 @@
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -69,22 +69,22 @@
       0.7929925155296614
     ],
     "ys": [
-      0.05798340021258257,
-      0.041904227365681966,
+      0.05798340021258256,
+      0.04190422736568196,
       0.02936624320782965,
-      0.01992526977609041,
-      0.013059136945119225,
-      0.008356470041248175,
+      0.019925269776090413,
+      0.013059136945119223,
+      0.008356470041248171,
       0.005219092927360337,
       0.0032087975808839644,
-      0.0019199405262616408,
+      0.0019199405262616406,
       0.0010855264302155057,
-      5.619278902307797E-4,
-      2.5632708456344976E-4,
-      9.795826467321657E-5,
+      5.619278902307795E-4,
+      2.563270845634498E-4,
+      9.795826467321661E-5,
       3.093950684856507E-5,
       7.164683336505891E-6,
-      9.927613969917703E-7,
+      9.927613969917701E-7,
       3.041624502650113E-8,
       2.0591305604095127E-11,
       0.0,
@@ -107,32 +107,32 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
     "ys": [
-      0.247718930784228,
+      0.24771893078422802,
       0.21523675836712636,
-      0.18161823548824618,
+      0.18161823548824615,
       0.1478057991464071,
-      0.11545178047071233,
-      0.08622984829115032,
-      0.06143083405840739,
+      0.11545178047071235,
+      0.08622984829115031,
+      0.0614308340584074,
       0.0414783202603966,
-      0.026613647847004047,
-      0.016122062107857667,
+      0.026613647847004044,
+      0.01612206210785767,
       0.009167459234650009,
-      0.004722903807205595,
+      0.0047229038072055946,
       0.002214599540841417,
       8.96285507325836E-4,
       3.067999345972684E-4,
       8.267322513113308E-5,
       1.5932119719803484E-5,
-      1.7946631532952554E-6,
+      1.7946631532952552E-6,
       1.06895828117477E-7,
       6.68125464781831E-10
     ]
@@ -166,20 +166,20 @@
       0.2111408438896052,
       0.17854755392401112,
       0.14527845926431035,
-      0.11415150096883397,
+      0.11415150096883399,
       0.08587864028339966,
-      0.06154846143016319,
-      0.04205905132892356,
-      0.02729969817162939,
+      0.061548461430163195,
+      0.04205905132892357,
+      0.027299698171629392,
       0.01678063082631571,
       0.009668716589318763,
       0.005145168066638075,
       0.002484010178699564,
-      0.0010642217286274949,
+      0.0010642217286274947,
       3.910335843512345E-4,
-      1.18838326388187E-4,
+      1.1883832638818702E-4,
       2.8076658021732084E-5,
-      4.561137287903132E-6,
+      4.561137287903131E-6,
       4.7281340794708457E-7
     ]
   }
diff --git a/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-BOSTON_MA.json b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-BOSTON_MA.json
new file mode 100644
index 0000000000000000000000000000000000000000..8fbe33b7dacdf6ba26f68f12b85deeb8879408fc
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-BOSTON_MA.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      0.012035250953950496,
+      0.008136450513957994,
+      0.005357340154375904,
+      0.0034038199938644185,
+      0.0020759822589634836,
+      0.001182204173473093,
+      6.381637241440367E-4,
+      3.180535412630101E-4,
+      1.4885096963816372E-4,
+      6.570858797962465E-5,
+      2.7907226394671614E-5,
+      1.1603173073102042E-5,
+      4.747368280123755E-6,
+      1.882308505471709E-6,
+      6.98596873660417E-7,
+      2.361735327562602E-7,
+      6.822723750146087E-8,
+      1.654170745318874E-8,
+      3.143062035320597E-9,
+      4.167714303705636E-10
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.0025398230942089003,
+      0.0017004849473223659,
+      0.0010805372045754734,
+      6.427743459107486E-4,
+      3.5250053778408804E-4,
+      1.784508617487965E-4,
+      8.235649641224025E-5,
+      3.518259008170571E-5,
+      1.403981672242182E-5,
+      5.2925574919901536E-6,
+      1.9318738133305824E-6,
+      6.930280662347882E-7,
+      2.3875608291364243E-7,
+      7.949667457419139E-8,
+      2.3033109721002647E-8,
+      5.81434524647463E-9,
+      1.1768734801565262E-9,
+      1.7921158518774916E-10,
+      1.707680249601977E-11,
+      6.620975889303251E-13
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.022133797305397516,
+      0.016464788221143715,
+      0.011993007697334196,
+      0.008469921726676995,
+      0.005769422436667971,
+      0.003785234685317904,
+      0.002398028509210169,
+      0.001464460382773019,
+      8.708938689719437E-4,
+      5.050137904309894E-4,
+      2.8744285592528334E-4,
+      1.5759519816243772E-4,
+      8.474954902281687E-5,
+      4.331566395015309E-5,
+      2.100673497927998E-5,
+      9.364687468186962E-6,
+      3.735891954644456E-6,
+      1.2797193572338944E-6,
+      3.677725757853919E-7,
+      8.117385475823619E-8
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.03366552771204859,
+      0.02527490175327033,
+      0.01836359217990806,
+      0.012936884452302021,
+      0.008688945266911698,
+      0.005625605703707624,
+      0.0034731062327398457,
+      0.002041414499953951,
+      0.0011521441250253442,
+      6.256035783742621E-4,
+      3.29051295217555E-4,
+      1.678812267708219E-4,
+      8.28900654230493E-5,
+      3.9329909274772225E-5,
+      1.770632155464228E-5,
+      7.400623622880165E-6,
+      2.815170943710613E-6,
+      9.444508782310246E-7,
+      2.664356480123001E-7,
+      6.028000859708366E-8
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-CHICAGO_IL.json b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-CHICAGO_IL.json
new file mode 100644
index 0000000000000000000000000000000000000000..7f164c52a733f0859d2479350a120519ab428cf0
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-CHICAGO_IL.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      0.011743450939977118,
+      0.008125308944564938,
+      0.005699841355233888,
+      0.004063331479854992,
+      0.002914932752547856,
+      0.0020116574917099913,
+      0.001302302418803793,
+      7.508580888508447E-4,
+      3.779758912608106E-4,
+      1.6076657926219107E-4,
+      5.6404502509288863E-5,
+      1.5854840222432907E-5,
+      3.4666024386239945E-6,
+      6.276175503615024E-7,
+      1.1311107110879795E-7,
+      3.290169505019905E-8,
+      8.920167427589635E-9,
+      2.0381078454137685E-9,
+      3.6171947320353567E-10,
+      4.4457055160088465E-11
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.003914675231054258,
+      0.003145124290559445,
+      0.0025399851047794315,
+      0.0019954071465699266,
+      0.0014663954072994365,
+      9.81078515831008E-4,
+      5.766625095711313E-4,
+      2.912208314933962E-4,
+      1.2323301880628123E-4,
+      4.232930941434379E-5,
+      1.1417819112031977E-5,
+      2.284917995979172E-6,
+      3.1890512519220076E-7,
+      2.66347166743998E-8,
+      2.6310940908972222E-9,
+      6.43417733035982E-10,
+      1.3439312600713073E-10,
+      2.231605774414246E-11,
+      2.5216333075047996E-12,
+      1.3184079536599202E-13
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.014201965383094008,
+      0.009836661064584255,
+      0.006887055395108681,
+      0.004822972654784702,
+      0.0033064514318962616,
+      0.002152321220366931,
+      0.0012913959704858482,
+      6.98078988574668E-4,
+      3.4489953492751826E-4,
+      1.5983798459686007E-4,
+      7.339650238789367E-5,
+      3.4227890897312936E-5,
+      1.6846491297689144E-5,
+      8.28535889683906E-6,
+      3.961387655798771E-6,
+      1.7527896460680704E-6,
+      6.948067057717801E-7,
+      2.3627402069950385E-7,
+      6.733661284906263E-8,
+      1.4715213946019287E-8
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.02584957271338509,
+      0.017753646580124724,
+      0.012007008129215242,
+      0.008128801283198313,
+      0.005452530605807153,
+      0.0036242624057437533,
+      0.002294303050029684,
+      0.0013363583126878716,
+      7.036603069604337E-4,
+      3.30610885337662E-4,
+      1.400951836783552E-4,
+      5.5199892795127905E-5,
+      2.1302618500609412E-5,
+      8.42239067335991E-6,
+      3.4034559898394304E-6,
+      1.3409496391300434E-6,
+      4.906709317661948E-7,
+      1.5953368600015112E-7,
+      4.3540972907165534E-8,
+      9.42915621906308E-9
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-LOS_ANGELES_CA.json b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-LOS_ANGELES_CA.json
new file mode 100644
index 0000000000000000000000000000000000000000..6ca89f349a5057489720e01e5de1006d5a590bde
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-LOS_ANGELES_CA.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      0.8837600400462444,
+      0.6673187946502046,
+      0.4882835378108954,
+      0.3455202166844926,
+      0.2367218318405121,
+      0.15432987457124395,
+      0.09700869655124371,
+      0.057593046930510976,
+      0.03261973805664403,
+      0.01759318861447405,
+      0.009099208609714898,
+      0.004532045855324721,
+      0.002160291779562183,
+      9.598294573466019E-4,
+      3.815584587536864E-4,
+      1.3029279327607092E-4,
+      3.496301615269094E-5,
+      6.804428159353637E-6,
+      7.233059032103408E-7,
+      1.661979548317248E-8
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.26692356212816387,
+      0.19346845572100124,
+      0.13503542406081984,
+      0.09029445439050207,
+      0.05754103507466149,
+      0.03519922606956951,
+      0.020504611873457562,
+      0.011388531110149687,
+      0.0059444896413465755,
+      0.0028430325716940386,
+      0.0012287934151915673,
+      4.724175228821316E-4,
+      1.5728193847180564E-4,
+      4.595444068602736E-5,
+      1.0851693057747736E-5,
+      2.017001415376882E-6,
+      2.210202583470558E-7,
+      7.826523371711846E-9,
+      5.669263644795599E-14,
+      0.0
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      1.079273358013586,
+      0.8555077463178733,
+      0.6628820990093294,
+      0.5013561151198924,
+      0.36992677755186465,
+      0.2653583472133587,
+      0.18369501834776972,
+      0.12071462999887433,
+      0.074674318290157,
+      0.042992065057384884,
+      0.02315821307836935,
+      0.011556449792705816,
+      0.005547502998353477,
+      0.002478054744283922,
+      0.0010047599090291066,
+      3.4334771609188824E-4,
+      9.186566532588404E-5,
+      1.735151909310151E-5,
+      2.0045026724201254E-6,
+      7.731688307601966E-8
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      1.2706641533906105,
+      1.0383180446078166,
+      0.8255059396697082,
+      0.642505662697047,
+      0.4861506324822116,
+      0.36127298337673586,
+      0.26102771492005267,
+      0.1816798271040518,
+      0.12089246356442312,
+      0.07583968522654515,
+      0.04454853347056016,
+      0.024484293055083213,
+      0.012699307287425965,
+      0.006279461603123059,
+      0.0029487400119263415,
+      0.0012723468881415748,
+      4.822498512000508E-4,
+      1.5188574868477565E-4,
+      3.672591704538665E-5,
+      6.1519003305608015E-6
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-NEW_MADRID_MO.json b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-NEW_MADRID_MO.json
new file mode 100644
index 0000000000000000000000000000000000000000..7037b601836a22b401d5838c93919b38f42b0692
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-NEW_MADRID_MO.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      0.03810825840039236,
+      0.028315881963472057,
+      0.020672225797126367,
+      0.014870841055017738,
+      0.010645178514638951,
+      0.007579226339112702,
+      0.005525146309384489,
+      0.004150104336178288,
+      0.0032832768942293996,
+      0.002736483538207061,
+      0.0023616078072307626,
+      0.002030219304310808,
+      0.001653622994385719,
+      0.0012136295169658808,
+      7.696144694320109E-4,
+      4.1227100295072064E-4,
+      1.800302271541464E-4,
+      6.366327102023256E-5,
+      1.7295674975518613E-5,
+      3.4296680438421237E-6
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.009208490572401862,
+      0.006949044290028717,
+      0.005306022483737845,
+      0.004155982807154481,
+      0.0033748323193255178,
+      0.0028673366575082126,
+      0.0025338938062588858,
+      0.0022965778496380263,
+      0.0020710240709275645,
+      0.0017848984735762319,
+      0.001418999638814905,
+      0.0010161066741280161,
+      6.401986492207046E-4,
+      3.5185659206844706E-4,
+      1.60235732766765E-4,
+      6.062719466111046E-5,
+      1.8059984462886E-5,
+      3.992606691586526E-6,
+      5.941978049955505E-7,
+      3.907477602123017E-8
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.07385719651712236,
+      0.06339731846609972,
+      0.05324739058832817,
+      0.04350964284607091,
+      0.03455200231823048,
+      0.02673578927843179,
+      0.02026653415804013,
+      0.01509405033443092,
+      0.011160466116674345,
+      0.008243233670157545,
+      0.006149418866075562,
+      0.004638605840165204,
+      0.0036081610853177675,
+      0.0028667097097824818,
+      0.002282027734121092,
+      0.0017173902293493675,
+      0.0011387960982620043,
+      6.206346289257639E-4,
+      2.676485464183286E-4,
+      8.559018237373796E-5
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.08841662701849765,
+      0.07591742600201586,
+      0.06349049229025132,
+      0.05159654623603552,
+      0.04033861199238173,
+      0.03066871056836901,
+      0.022664718736152712,
+      0.016375571535456927,
+      0.011700180723249338,
+      0.008331012521430115,
+      0.0059918284439274515,
+      0.00441961706015835,
+      0.00339047874331689,
+      0.002704887471971463,
+      0.0021874716446254974,
+      0.0017054340574167853,
+      0.001200911759714859,
+      7.123552774961517E-4,
+      3.356101022303263E-4,
+      1.2135441742664016E-4
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-NEW_YORK_NY.json b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-NEW_YORK_NY.json
new file mode 100644
index 0000000000000000000000000000000000000000..8a3df6f99054d98f3a65ffa471850e06121c95c2
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-NEW_YORK_NY.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      0.012374804522292664,
+      0.00836661557414539,
+      0.005447933203374217,
+      0.003381935579235245,
+      0.0020006567971856686,
+      0.0011054229852685289,
+      5.859581677512343E-4,
+      2.932121678682943E-4,
+      1.421916075501724E-4,
+      6.726067803272612E-5,
+      3.134520433789695E-5,
+      1.4361751527596114E-5,
+      6.369510633138831E-6,
+      2.6653684534293637E-6,
+      1.0234643150923622E-6,
+      3.5363710757446486E-7,
+      1.0369647752886424E-7,
+      2.5379169471070928E-8,
+      4.851084599984121E-9,
+      6.463135305490378E-10
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.0026995587713563303,
+      0.001729856217452915,
+      0.001043724658751179,
+      5.893703808209607E-4,
+      3.0866135946543816E-4,
+      1.5129449159709623E-4,
+      6.909234873826654E-5,
+      3.0170083088739838E-5,
+      1.2820296859449094E-5,
+      5.334744194862449E-6,
+      2.1850795994287946E-6,
+      8.683687558905425E-7,
+      3.2288483966793256E-7,
+      1.1154021351741914E-7,
+      3.321633846097989E-8,
+      8.550579030900384E-9,
+      1.7547455322744306E-9,
+      2.705551313725607E-10,
+      2.6042457346830444E-11,
+      1.0203573556440597E-12
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.020286596128412507,
+      0.015122005526298518,
+      0.011082055927620184,
+      0.007943124693114983,
+      0.005565081037653393,
+      0.0038115412828580303,
+      0.0025512684613907266,
+      0.0016581992888227432,
+      0.00105005091277049,
+      6.457811692687936E-4,
+      3.870049228081458E-4,
+      2.2185052288528715E-4,
+      1.236206185563812E-4,
+      6.497784148592097E-5,
+      3.216899369858368E-5,
+      1.4558524637476324E-5,
+      5.872716012004253E-6,
+      2.02924869721662E-6,
+      5.875115950380293E-7,
+      1.3058577801930758E-7
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.030924385577531452,
+      0.023158670112213068,
+      0.0168266446727544,
+      0.011887481789564952,
+      0.008051319708031232,
+      0.005306104962367634,
+      0.003378081358145652,
+      0.002076878721198851,
+      0.001240205271953173,
+      7.171120777581213E-4,
+      4.015972226266107E-4,
+      2.170493146671748E-4,
+      1.126383063319517E-4,
+      5.5685617014544675E-5,
+      2.5902604304970156E-5,
+      1.110015884696405E-5,
+      4.299689212594959E-6,
+      1.461140887787391E-6,
+      4.159137664565076E-7,
+      9.467170166750412E-8
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-RENO_NV.json b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-RENO_NV.json
new file mode 100644
index 0000000000000000000000000000000000000000..6358bb7ca8c5c4e1d1ff4b6bb8e63fbc38ed5132
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-RENO_NV.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      0.4509980504265575,
+      0.31640849903818624,
+      0.21358652709530696,
+      0.13852590684777596,
+      0.08704051464729225,
+      0.05253655067618185,
+      0.0313630074964224,
+      0.01828926856693416,
+      0.010569791905629159,
+      0.005985554870546813,
+      0.003258642867557007,
+      0.0016482421911010224,
+      7.428663370263867E-4,
+      2.8617770593243423E-4,
+      9.001026608080633E-5,
+      2.1766162718777832E-5,
+      3.4439011809001544E-6,
+      2.8437342591115396E-7,
+      4.7116082241967405E-9,
+      1.4267296632389565E-11
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.11700214317084666,
+      0.07984556633545123,
+      0.05291299606238968,
+      0.03404755985513787,
+      0.02114650811223566,
+      0.012726247663438568,
+      0.007323504383620474,
+      0.0040144093270540835,
+      0.00205488138625064,
+      9.525469423918409E-4,
+      3.8994761986655535E-4,
+      1.365245169629735E-4,
+      3.884698378921924E-5,
+      8.873557780140218E-6,
+      1.3451231092798012E-6,
+      1.2032259298422766E-7,
+      4.609116834290836E-9,
+      2.59008536728359E-11,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.4945845377045569,
+      0.35620880201657545,
+      0.25137051984623665,
+      0.17424903457376942,
+      0.11924752502067437,
+      0.08070972610358695,
+      0.053872250044587636,
+      0.03502132654998915,
+      0.022080257240772574,
+      0.013369869167750875,
+      0.007751781243749961,
+      0.0041510856851986345,
+      0.002024329677524295,
+      8.332799191377023E-4,
+      2.803322221722735E-4,
+      7.216436198566049E-5,
+      1.3139937692058717E-5,
+      1.4887451524976926E-6,
+      8.583934300949907E-8,
+      1.4528521242785493E-10
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.6240554880372423,
+      0.4648421129913744,
+      0.3364614024187943,
+      0.23936400511977998,
+      0.1665729605388722,
+      0.11552626958244688,
+      0.07924766772201519,
+      0.05346535671204676,
+      0.03534685017891077,
+      0.022654951039290397,
+      0.013996293443887118,
+      0.008274695350937313,
+      0.00461624083114446,
+      0.002359144711013691,
+      0.0010588845419861948,
+      3.9830557252783347E-4,
+      1.2098385904750002E-4,
+      2.7883432647415395E-5,
+      4.379653019618013E-6,
+      3.910084902445004E-7
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-SALT_LAKE_CITY_UT.json b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-SALT_LAKE_CITY_UT.json
new file mode 100644
index 0000000000000000000000000000000000000000..f1e1051c9ebf55a36260cb784898e57535a2f016
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-SALT_LAKE_CITY_UT.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      0.07329300166227745,
+      0.055337802621669735,
+      0.040968817403122415,
+      0.02972750508986697,
+      0.021208125016890057,
+      0.014718949348420704,
+      0.010151835343442727,
+      0.006964506964454938,
+      0.004865384284178251,
+      0.0034433728216316144,
+      0.002402092823420567,
+      0.0015776279469702096,
+      9.282583752562302E-4,
+      4.6859866659776025E-4,
+      1.957562143016859E-4,
+      6.566956362330448E-5,
+      1.610677465115143E-5,
+      2.5356426012945703E-6,
+      1.781660653263597E-7,
+      5.303018859899033E-10
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.027011742125709646,
+      0.02054026099288426,
+      0.015151661177658343,
+      0.010840130319940439,
+      0.007525995300555911,
+      0.005119570216554908,
+      0.003395985153115906,
+      0.00219752272463167,
+      0.0013656595910964422,
+      7.894479600187155E-4,
+      4.1061078425454916E-4,
+      1.8566800604505942E-4,
+      7.046560404053304E-5,
+      2.214811117324299E-5,
+      5.1877205964415855E-6,
+      8.883945318293091E-7,
+      8.064900890952642E-8,
+      1.5197879144214235E-9,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.08315499079996769,
+      0.06431139828469785,
+      0.04915016022135098,
+      0.03721435569635022,
+      0.02795306146262804,
+      0.020719362574279174,
+      0.01503310418456431,
+      0.010630741763975264,
+      0.007468303088638388,
+      0.0053200412902422636,
+      0.0038825297002366356,
+      0.0027994970622556223,
+      0.0018938616014459182,
+      0.0010946026000977843,
+      5.105948259048646E-4,
+      1.814145569321867E-4,
+      4.669415700262315E-5,
+      7.661897211595805E-6,
+      6.963517941442256E-7,
+      2.099912331198713E-8
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.10014082840506616,
+      0.07937813836503774,
+      0.061700223014619984,
+      0.047497342277461774,
+      0.0360740112616547,
+      0.027342479018824466,
+      0.020449825995003054,
+      0.014960970616397342,
+      0.010734355728858135,
+      0.0076366762405428714,
+      0.005496130334334665,
+      0.004028162881456666,
+      0.002942927307469069,
+      0.0020330523395788187,
+      0.0012414540217925533,
+      6.298234078379817E-4,
+      2.5541203512870637E-4,
+      7.99435274083079E-5,
+      1.7681458944686246E-5,
+      2.3632474990565053E-6
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-SAN_FRANCISCO_CA.json b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-SAN_FRANCISCO_CA.json
new file mode 100644
index 0000000000000000000000000000000000000000..b20b3412aea0f5ba553dd87531d3930a497d5db3
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-SAN_FRANCISCO_CA.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      0.793213593982615,
+      0.577983578178273,
+      0.40579525953388984,
+      0.2759859720941026,
+      0.18399009975966585,
+      0.11936538209099885,
+      0.07694484056508578,
+      0.04840785421492175,
+      0.029819512815414086,
+      0.01768412385500739,
+      0.009915141001364477,
+      0.005117546173329484,
+      0.0023490942214720507,
+      9.214389956449585E-4,
+      2.9468592716695214E-4,
+      7.308514452887161E-5,
+      1.1247347826454863E-5,
+      6.940428175459909E-7,
+      5.10346784921843E-9,
+      5.841096556615169E-11
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.2025943739811626,
+      0.14523332315140788,
+      0.10250307359018228,
+      0.07087475113028119,
+      0.04756353086470577,
+      0.03103939235040483,
+      0.019605803017679113,
+      0.012137851217009655,
+      0.007356656688105114,
+      0.004265832391757879,
+      0.002291262860196218,
+      0.0010938967876560786,
+      4.4251021889519853E-4,
+      1.4953639800960512E-4,
+      3.814923137778993E-5,
+      6.870948539135475E-6,
+      6.953041247719502E-7,
+      2.8121734850878907E-8,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      1.0168692143070062,
+      0.7923123914451994,
+      0.5957749833811382,
+      0.4320284093428651,
+      0.303631608228334,
+      0.20829236120541317,
+      0.14039078301687707,
+      0.09271147762259842,
+      0.060008863388386874,
+      0.037552479212519765,
+      0.02235243410344431,
+      0.01203566580239071,
+      0.00575008176921448,
+      0.0022603495396226014,
+      7.034883142819305E-4,
+      1.5908436720509333E-4,
+      2.2735672283956533E-5,
+      1.3034249979450535E-6,
+      1.0236851661932837E-8,
+      2.5180884928616156E-11
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      1.2051064264582476,
+      0.9782651541920249,
+      0.7648840249547406,
+      0.5785033270293076,
+      0.42033271375876846,
+      0.29850865082744316,
+      0.2068893742866078,
+      0.14038182035917574,
+      0.09379780723050979,
+      0.06140722538398119,
+      0.03905929899039934,
+      0.023649257644110883,
+      0.01321452449292896,
+      0.006565163545150544,
+      0.002790251113545982,
+      9.69470326568192E-4,
+      2.6350269428707E-4,
+      5.2101041445273694E-5,
+      5.964900806365306E-6,
+      2.2241971901700354E-7
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-SEATTLE_WA.json b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-SEATTLE_WA.json
new file mode 100644
index 0000000000000000000000000000000000000000..97795b24292f483a1ce636ccab70a24bf480ba89
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2023/nshm-conus-2023-2023-SEATTLE_WA.json
@@ -0,0 +1,186 @@
+{
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076538,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.153556358747558,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.532476871297972,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.3160815469734789,
+      0.0861776962410524,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591926
+    ],
+    "ys": [
+      0.19897581677887666,
+      0.1577395573051793,
+      0.12044861188465388,
+      0.08849701093209442,
+      0.06286360738094342,
+      0.04276589752771625,
+      0.02837549286089879,
+      0.01809939308657242,
+      0.011162206885093687,
+      0.006559356758212915,
+      0.0036143759422569417,
+      0.0018285570367639595,
+      8.296667905783596E-4,
+      3.284945561883995E-4,
+      1.0963455941947854E-4,
+      2.9696131236439645E-5,
+      5.805827780831235E-6,
+      6.855121895761377E-7,
+      3.2583055586129815E-8,
+      1.8738214080387096E-11
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873973,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.057458910275419064,
+      0.04119453721482716,
+      0.028738886126215488,
+      0.019517266040986553,
+      0.012865085501768908,
+      0.008286940358446314,
+      0.005177828770184231,
+      0.0031351056053247803,
+      0.0018040520137694118,
+      9.550967828148115E-4,
+      4.525051792337519E-4,
+      1.8601411939532498E-4,
+      6.34002565523996E-5,
+      1.7744137447968963E-5,
+      3.6119400522511268E-6,
+      4.377163495039788E-7,
+      1.040241402813071E-8,
+      1.7354534758719045E-11,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.38566248081198456,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.832909122935104,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.2578412015141585,
+      0.22157628906966204,
+      0.1846973059387178,
+      0.1484454027157886,
+      0.1146425948592031,
+      0.08487402243951296,
+      0.060122997722412225,
+      0.0404714992516234,
+      0.025946563723898995,
+      0.015770187065794868,
+      0.009079699272726408,
+      0.00481041227280926,
+      0.0023578899725231082,
+      0.00101186450505057,
+      3.7074288922810117E-4,
+      1.0887407546288273E-4,
+      2.3944480179971553E-5,
+      3.4423038486722723E-6,
+      2.7874999242876813E-7,
+      6.628896595304417E-9
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.2869636502669868,
+      0.25417973544818384,
+      0.21906830834876057,
+      0.1834844524639711,
+      0.14787713473344755,
+      0.11527966254404634,
+      0.08627079311437469,
+      0.061710212057459315,
+      0.04223637305486282,
+      0.027568734753433105,
+      0.017153092866713564,
+      0.010123007487523891,
+      0.00561719974969265,
+      0.0028886570138894493,
+      0.0013460854387742321,
+      5.496026708999016E-4,
+      1.9120436392156004E-4,
+      5.465049981000188E-5,
+      1.2008852556658006E-5,
+      1.9094547695209577E-6
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-hawaii-2021-HILO_HI.json b/src/test/resources/e2e/nshm-hawaii-2021/nshm-hawaii-2021-2021-HILO_HI.json
similarity index 81%
rename from src/test/resources/e2e/nshm-hawaii-2021-HILO_HI.json
rename to src/test/resources/e2e/nshm-hawaii-2021/nshm-hawaii-2021-2021-HILO_HI.json
index e617904ad424756e56a56eb8471f6cc53934a52f..c6aea429d9107f5c8317653aaeaab2e1118b613b 100644
--- a/src/test/resources/e2e/nshm-hawaii-2021-HILO_HI.json
+++ b/src/test/resources/e2e/nshm-hawaii-2021/nshm-hawaii-2021-2021-HILO_HI.json
@@ -3,52 +3,52 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
-      1.139427959929886,
-      0.9096459257402049,
+      1.1394279599298858,
+      0.909645925740205,
       0.6810439562313703,
-      0.48213438998284375,
+      0.48213438998284386,
       0.3270662494936988,
       0.2122733790095776,
       0.13579352589768764,
       0.08466990088453301,
       0.0514796672410259,
-      0.0295922152331615,
+      0.029592215233161495,
       0.015605186053687877,
       0.007369438722986227,
-      0.003079134500128523,
+      0.0030791345001285235,
       0.001133816052813239,
       3.683841726832001E-4,
-      1.0771529770871671E-4,
+      1.0771529770871668E-4,
       2.7590429340726252E-5,
-      6.106383784135074E-6,
-      9.141545957726994E-7,
+      6.106383784135073E-6,
+      9.141545957726993E-7,
       4.716658318737339E-8
     ]
   },
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -69,17 +69,17 @@
       0.7929925155296614
     ],
     "ys": [
-      0.24225805041057027,
+      0.24225805041057025,
       0.1626494298061276,
       0.11286823232748022,
       0.08019936527365806,
       0.057001082377164766,
-      0.03977231046422921,
+      0.0397723104642292,
       0.026270923994779784,
       0.0159300182060438,
-      0.008586807484419113,
+      0.008586807484419114,
       0.0040091692633346795,
-      0.0016237229130359049,
+      0.0016237229130359047,
       5.831580842583807E-4,
       1.935491083341371E-4,
       6.446411351755592E-5,
@@ -87,8 +87,8 @@
       5.89324452995356E-6,
       1.3026715401568408E-6,
       2.061368668443604E-7,
-      2.231361292849435E-8,
-      3.427414499140028E-10
+      2.2313612928494348E-8,
+      3.4274144991400273E-10
     ]
   },
   "Peak Ground Acceleration": {
@@ -107,10 +107,10 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
@@ -122,17 +122,17 @@
       0.868541087272583,
       0.6793538859833672,
       0.4895776766820634,
-      0.32305214036758084,
+      0.3230521403675808,
       0.19728774899189122,
-      0.11230291486323442,
+      0.11230291486323443,
       0.05999879240178362,
-      0.02903842762547559,
+      0.029038427625475594,
       0.012752442114810743,
       0.004825259624029285,
       0.0015856433122290355,
       4.467361996202859E-4,
       1.0815891326044897E-4,
-      2.1501975995084007E-5,
+      2.1501975995084003E-5,
       3.0877820264321665E-6,
       2.0121735347546392E-7
     ]
@@ -165,14 +165,14 @@
       1.3442294606163505,
       1.2504550788598903,
       1.145108478540398,
-      1.0076845134906758,
+      1.0076845134906756,
       0.8393355383077514,
       0.6496537972367906,
       0.4625305796292689,
-      0.3035348264320895,
-      0.18409848770017573,
+      0.30353482643208957,
+      0.1840984877001757,
       0.10404729414822564,
-      0.05492082710147257,
+      0.054920827101472565,
       0.026929508320917738,
       0.012117250742785222,
       0.004912231979440461,
@@ -180,7 +180,7 @@
       5.433850247572385E-4,
       1.4341185451814312E-4,
       3.1018961899754435E-5,
-      5.1396679710212166E-6
+      5.139667971021216E-6
     ]
   }
 }
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-hawaii-2021-HONOLULU_HI.json b/src/test/resources/e2e/nshm-hawaii-2021/nshm-hawaii-2021-2021-HONOLULU_HI.json
similarity index 89%
rename from src/test/resources/e2e/nshm-hawaii-2021-HONOLULU_HI.json
rename to src/test/resources/e2e/nshm-hawaii-2021/nshm-hawaii-2021-2021-HONOLULU_HI.json
index 2e565934a37eaca8142276ee1d911d6f4ca2c69b..5f307f1d3eafd85d51559394fe223273545d0628 100644
--- a/src/test/resources/e2e/nshm-hawaii-2021-HONOLULU_HI.json
+++ b/src/test/resources/e2e/nshm-hawaii-2021/nshm-hawaii-2021-2021-HONOLULU_HI.json
@@ -3,29 +3,29 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
       0.1096176362431887,
       0.07712267985209978,
-      0.05236216472551224,
+      0.052362164725512236,
       0.03410083982464372,
       0.021327885700315224,
       0.012597455865731777,
@@ -38,7 +38,7 @@
       8.354936782969439E-5,
       3.0262362405560818E-5,
       9.700628718654082E-6,
-      2.73388661760168E-6,
+      2.7338866176016795E-6,
       6.418080520161567E-7,
       1.2432205810419981E-7,
       1.6644800833465068E-8,
@@ -48,7 +48,7 @@
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -70,7 +70,7 @@
     ],
     "ys": [
       0.023279814179665247,
-      0.015258454706800595,
+      0.015258454706800593,
       0.009636588671134795,
       0.0058636185962218715,
       0.0034303179683354557,
@@ -107,29 +107,29 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
     "ys": [
       0.16241112120908746,
       0.12117474522250349,
-      0.08821017091766083,
-      0.062475455947759634,
+      0.08821017091766084,
+      0.06247545594775962,
       0.0429411432751231,
       0.028525687803782396,
       0.018224455950293393,
       0.011059987400758736,
       0.006364262004183082,
       0.0034377054571609225,
-      0.001738825379832288,
+      0.0017388253798322879,
       7.965440914871203E-4,
       3.3531414903647464E-4,
       1.2359465951104756E-4,
-      3.997349646564974E-5,
+      3.997349646564973E-5,
       1.1017452326436623E-5,
       2.556220564845531E-6,
       4.819237373193018E-7,
@@ -161,13 +161,13 @@
       1.998773638612381
     ],
     "ys": [
-      0.20884911299107897,
+      0.20884911299107894,
       0.16145810468844024,
-      0.11999074916434269,
+      0.1199907491643427,
       0.08664281640904029,
       0.06035281081025548,
       0.04113660286620183,
-      0.027122373299762817,
+      0.02712237329976281,
       0.017158998663766196,
       0.010389832056442814,
       0.005966842420004629,
diff --git a/src/test/resources/e2e/nshm-hawaii-2021-KAILUA_KONA_HI.json b/src/test/resources/e2e/nshm-hawaii-2021/nshm-hawaii-2021-2021-KAILUA_KONA_HI.json
similarity index 78%
rename from src/test/resources/e2e/nshm-hawaii-2021-KAILUA_KONA_HI.json
rename to src/test/resources/e2e/nshm-hawaii-2021/nshm-hawaii-2021-2021-KAILUA_KONA_HI.json
index 3196aec256c3ca2aad96fbf09b432d2687c3f3b8..75e60ef6eaf3dd9429246559d7491673bc5ea3ac 100644
--- a/src/test/resources/e2e/nshm-hawaii-2021-KAILUA_KONA_HI.json
+++ b/src/test/resources/e2e/nshm-hawaii-2021/nshm-hawaii-2021-2021-KAILUA_KONA_HI.json
@@ -3,52 +3,52 @@
     "xs": [
       -5.991464547107982,
       -5.585999438999818,
-      -5.181423615076537,
+      -5.181423615076538,
       -4.775958506968373,
       -4.374058465024705,
       -3.9633162998156966,
       -3.5613661338149765,
-      -3.1535563587475584,
+      -3.153556358747558,
       -2.7488721956224653,
       -2.3434070875143007,
       -1.9379419794061366,
-      -1.5324768712979722,
+      -1.532476871297972,
       -1.1270117631898076,
       -0.7215466550816433,
-      -0.31608154697347896,
-      0.08617769624105241,
+      -0.3160815469734789,
+      0.0861776962410524,
       0.494696241836107,
       0.9001613499442714,
       1.3056264580524357,
-      1.7119945007591924
+      1.7119945007591926
     ],
     "ys": [
       0.9310649618626425,
-      0.7152683525622628,
-      0.5254960437436177,
-      0.37057192881004786,
-      0.25360306935928917,
+      0.7152683525622627,
+      0.5254960437436178,
+      0.37057192881004797,
+      0.2536030693592891,
       0.1673342748557868,
       0.10852163641624823,
       0.06764805605345484,
       0.04042125038591836,
       0.02275930256132998,
-      0.012035453130050871,
+      0.012035453130050867,
       0.006001361401039622,
       0.002825403258669261,
       0.0012397199668725764,
       4.913127725890904E-4,
       1.6916652515186739E-4,
-      4.608184816695928E-5,
-      9.142956045358948E-6,
+      4.6081848166959275E-5,
+      9.142956045358946E-6,
       1.067682459238504E-6,
-      4.4135240737735364E-8
+      4.413524073773537E-8
     ]
   },
   "5.00 Second Spectral Acceleration": {
     "xs": [
       -6.908755779315721,
-      -6.502290170873972,
+      -6.502290170873973,
       -6.0968250627658085,
       -5.692842534617867,
       -5.286388795682763,
@@ -77,15 +77,15 @@
       0.03208679105889853,
       0.020129540279605004,
       0.011639202185119844,
-      0.0061951399190677625,
-      0.0030758835356592923,
-      0.0014771509658122375,
-      7.061929082246017E-4,
-      3.3451441585971104E-4,
+      0.006195139919067763,
+      0.0030758835356592914,
+      0.0014771509658122373,
+      7.061929082246016E-4,
+      3.34514415859711E-4,
       1.5467986387544445E-4,
       6.363609376236911E-5,
       2.247131683032451E-5,
-      6.219516642047414E-6,
+      6.219516642047412E-6,
       1.2615492254822045E-6,
       1.5297532779407637E-7,
       7.198489307670766E-9
@@ -107,34 +107,34 @@
       -1.5994875815809322,
       -1.1973282616072674,
       -0.789658080940789,
-      -0.3856624808119846,
+      -0.38566248081198456,
       0.01980262729617973,
       0.4252677354043441,
-      0.8329091229351039,
+      0.832909122935104,
       1.235471471385307,
       1.6428726885203377
     ],
     "ys": [
       1.3099486083268739,
-      1.199523417668875,
-      1.0517265084684115,
+      1.1995234176688747,
+      1.0517265084684118,
       0.8707860874217463,
       0.6765138623146243,
-      0.493401638622512,
+      0.49340163862251196,
       0.33992289432676787,
       0.22192803156480623,
       0.13847632521718928,
-      0.08175333860325448,
-      0.04511099205028913,
+      0.0817533386032545,
+      0.04511099205028912,
       0.022490754664834876,
-      0.010374939794256521,
-      0.004313773760782855,
-      0.0016216028906538636,
+      0.01037493979425652,
+      0.004313773760782856,
+      0.0016216028906538638,
       5.238693662990279E-4,
       1.377271763315316E-4,
       2.6761997339916372E-5,
-      3.504591338211114E-6,
-      2.3097496341714198E-7
+      3.5045913382111136E-6,
+      2.30974963417142E-7
     ]
   },
   "0.20 Second Spectral Acceleration": {
@@ -170,15 +170,15 @@
       0.47242900392024684,
       0.32217060882735266,
       0.20861884543377657,
-      0.12835589658796198,
+      0.128355896587962,
       0.07482094551740774,
-      0.04095407995887267,
+      0.040954079958872666,
       0.02092944382070038,
-      0.009967533485864724,
+      0.009967533485864722,
       0.004400165256626161,
       0.0017609227596797569,
       6.180891817013114E-4,
-      1.8154635267886136E-4,
+      1.815463526788613E-4,
       4.1290331752591286E-5,
       6.280186508295586E-6
     ]
diff --git a/ws.Dockerfile b/ws.Dockerfile
index b4887d8a8dbc77369fd67444c53ce4e953465849..69a5349a03560334b0405d7dff28a20d098963ac 100644
--- a/ws.Dockerfile
+++ b/ws.Dockerfile
@@ -51,6 +51,7 @@ ENV MODELS_DIRECTORY="/model"
 WORKDIR /app
 
 COPY --from=builder /app/build/libs/nshmp-haz.jar .
+COPY --from=builder /app/nshms.yml .
 
 VOLUME [ "${MODELS_DIRECTORY}" ]