@ohif/app 3.13.0-beta.67 → 3.13.0-beta.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/{2851.bundle.daa0f5f8bca6492d7033.js → 2851.bundle.d13bb9fdd21d896df73d.js} +25 -19
  2. package/dist/{6376.bundle.738c873196491232acb6.js → 6376.bundle.527820a5cb1eece2a8d2.js} +1 -1
  3. package/dist/{7166.bundle.04b935471132c7d203f2.js → 7166.bundle.09a58966db6c16ea7b49.js} +94 -9
  4. package/dist/{7190.bundle.3738008038e70525764f.js → 7190.bundle.479332d662ffe08d1f92.js} +169 -104
  5. package/dist/{app.bundle.f03d71919b8eff3b1f22.js → app.bundle.e5ebf5742695ab738d6d.js} +2 -2
  6. package/dist/index.html +1 -1
  7. package/dist/{interpolation.bundle.2559b710030605fc2bc6.js → interpolation.bundle.829844ff3f72f5645f29.js} +1 -1
  8. package/dist/sw.js +1 -1
  9. package/package.json +20 -20
  10. /package/dist/{1459.bundle.a159e0dd401123bf9e48.js → 1459.bundle.4441b0daff1e7d1e475b.js} +0 -0
  11. /package/dist/{1933.bundle.110d30b6901499a2103d.js → 1933.bundle.5f85010474c1a26d5b2c.js} +0 -0
  12. /package/dist/{2018.bundle.55568a2358323282a1d8.js → 2018.bundle.e758b183c56ccd7677f4.js} +0 -0
  13. /package/dist/{213.bundle.364a8317839173e8ea12.js → 213.bundle.090350c45f9d6b691fad.js} +0 -0
  14. /package/dist/{2424.bundle.ad9d0bbeb7723bf434dd.js → 2424.bundle.67e7eb608cce3af35b92.js} +0 -0
  15. /package/dist/{3138.bundle.1b2ed03742a5cf16d22b.js → 3138.bundle.d7f49154c5d6271c9f24.js} +0 -0
  16. /package/dist/{3461.bundle.f499a235aa460895003e.js → 3461.bundle.9f7098f3ea722176acf6.js} +0 -0
  17. /package/dist/{4507.bundle.2534b564fe3f0ce90801.js → 4507.bundle.e964cd8ebfa78f345b34.js} +0 -0
  18. /package/dist/{4819.bundle.11a2ec62c5d49262edf1.js → 4819.bundle.60695cca9169bb3010f6.js} +0 -0
  19. /package/dist/{5015.bundle.6dc4e690443e7d5215f6.js → 5015.bundle.6470ea8212884be78cbc.js} +0 -0
  20. /package/dist/{5028.bundle.723ddddb2203c1c0d2e7.js → 5028.bundle.52628ca9cb97df509a06.js} +0 -0
  21. /package/dist/{5457.bundle.180ec36f95f7dfbdb63c.js → 5457.bundle.708c1cd4969fe0167956.js} +0 -0
  22. /package/dist/{5485.bundle.2149d00e98cfcecb114b.js → 5485.bundle.648fe26db2f1f24faace.js} +0 -0
  23. /package/dist/{6027.bundle.ad09ef0a6ab5ab0100ad.js → 6027.bundle.0a9936fc1cf3af4e9841.js} +0 -0
  24. /package/dist/{7639.bundle.29a1a0e1df7929296a3e.js → 7639.bundle.8fd93608aa841bda067b.js} +0 -0
  25. /package/dist/{8305.bundle.63b6a800160f4da7c372.js → 8305.bundle.11c24bdac62073fdf9b5.js} +0 -0
  26. /package/dist/{8499.bundle.b9cee1e292a04237794a.js → 8499.bundle.1433b326d312ac8d8b1f.js} +0 -0
  27. /package/dist/{85.bundle.856bfa0f56bba25ff5fb.js → 85.bundle.69ed0f5cd48a2416a0a7.js} +0 -0
  28. /package/dist/{8558.bundle.685196a726b715d41ff0.js → 8558.bundle.d9d0faa6b079173a1de5.js} +0 -0
  29. /package/dist/{8583.bundle.a7afd7affafa244e55e7.js → 8583.bundle.2ac4f7476f2b3e026260.js} +0 -0
  30. /package/dist/{9927.bundle.e4186f993674729cef10.js → 9927.bundle.a112e60a246078248216.js} +0 -0
@@ -10612,8 +10612,8 @@ function AboutModalDefault() {
10612
10612
  name
10613
10613
  } = (0,browser_detect_es5/* default */.A)();
10614
10614
  const browser = `${name[0].toUpperCase()}${name.substr(1)} ${version}`;
10615
- const versionNumber = "3.13.0-beta.67";
10616
- const commitHash = "691e26731f4f3b3957fe81fc051b09c972696cf6";
10615
+ const versionNumber = "3.13.0-beta.69";
10616
+ const commitHash = "5e624f13870cdb63300b82285b46d4b21b9d47c3";
10617
10617
  const [main, beta] = versionNumber.split('-');
10618
10618
  return /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU, {
10619
10619
  className: "w-[400px]"
@@ -10658,11 +10658,7 @@ const MODIFIER_OPTIONS = [{
10658
10658
  label: 'Meta'
10659
10659
  }];
10660
10660
  const DEFAULT_TOOL_BINDINGS_STORAGE_KEY = 'user-preferred-tool-bindings';
10661
- function getToolBindingsStorageKey(customizationService) {
10662
- const customizationValue = customizationService?.getCustomization('ohif.userPreferences.toolBindingsStorageKey');
10663
- return typeof customizationValue === 'string' && customizationValue.length > 0 ? customizationValue : DEFAULT_TOOL_BINDINGS_STORAGE_KEY;
10664
- }
10665
- function getToolModifier(toolGroupService, toolGroupId, toolName) {
10661
+ function getToolModifier(toolGroupService, toolGroupId, toolName, mouseButton) {
10666
10662
  if (!toolGroupService) {
10667
10663
  return null;
10668
10664
  }
@@ -10670,7 +10666,14 @@ function getToolModifier(toolGroupService, toolGroupId, toolName) {
10670
10666
  if (!bindings?.length) {
10671
10667
  return null;
10672
10668
  }
10673
- const modifierBinding = bindings.find(binding => binding.modifierKey != null && binding.numTouchPoints == null);
10669
+ const modifierBinding = bindings.find(binding => binding.mouseButton === mouseButton && binding.modifierKey != null && binding.numTouchPoints == null);
10670
+ return modifierBinding?.modifierKey != null ? String(modifierBinding.modifierKey) : null;
10671
+ }
10672
+ function getModifierFromBindings(bindings, mouseButton) {
10673
+ if (!bindings?.length) {
10674
+ return null;
10675
+ }
10676
+ const modifierBinding = bindings.find(binding => binding.mouseButton === mouseButton && binding.modifierKey != null && binding.numTouchPoints == null);
10674
10677
  return modifierBinding?.modifierKey != null ? String(modifierBinding.modifierKey) : null;
10675
10678
  }
10676
10679
  function UserPreferencesModalDefault({
@@ -10685,8 +10688,6 @@ function UserPreferencesModalDefault({
10685
10688
  i18n: i18nextInstance
10686
10689
  } = (0,es/* useTranslation */.Bd)('UserPreferencesModal');
10687
10690
  const toolGroupService = servicesManager?.services?.toolGroupService;
10688
- const customizationService = servicesManager?.services?.customizationService;
10689
- const toolBindingsStorageKey = getToolBindingsStorageKey(customizationService);
10690
10691
  const {
10691
10692
  hotkeyDefinitions = {},
10692
10693
  hotkeyDefaults = {}
@@ -10703,7 +10704,8 @@ function UserPreferencesModalDefault({
10703
10704
  const resolvedHotkeyDefaults = Object.keys(hotkeyDefaults).length ? hotkeyDefaults : fallbackHotkeyDefinitions;
10704
10705
  const initialHotkeyDefinitions = Object.keys(hotkeyDefinitions).length ? hotkeyDefinitions : resolvedHotkeyDefaults;
10705
10706
  const currentLanguage = currentLanguageFn();
10706
- const initialCrosshairModifier = (0,react.useMemo)(() => getToolModifier(toolGroupService, 'mpr', 'Crosshairs'), [toolGroupService]);
10707
+ const initialCrosshairModifier = (0,react.useMemo)(() => getToolModifier(toolGroupService, 'mpr', 'Crosshairs', 1), [toolGroupService]);
10708
+ const defaultCrosshairBindings = (0,react.useMemo)(() => toolGroupService?.getDefaultToolBindings?.('mpr', 'Crosshairs'), [toolGroupService]);
10707
10709
  const [state, setState] = (0,react.useState)({
10708
10710
  hotkeyDefinitions: initialHotkeyDefinitions,
10709
10711
  languageValue: currentLanguage.value,
@@ -10732,10 +10734,16 @@ function UserPreferencesModalDefault({
10732
10734
  ...state,
10733
10735
  languageValue: defaultLanguage.value,
10734
10736
  hotkeyDefinitions: resolvedHotkeyDefaults,
10735
- crosshairModifier: initialCrosshairModifier
10737
+ crosshairModifier: getModifierFromBindings(defaultCrosshairBindings, 1)
10736
10738
  }));
10737
10739
  hotkeysManager.restoreDefaultBindings();
10738
- localStorage.removeItem(toolBindingsStorageKey);
10740
+ if (toolGroupService && defaultCrosshairBindings?.length) {
10741
+ toolGroupService.setToolBindings('mpr', 'Crosshairs', defaultCrosshairBindings);
10742
+ toolGroupService.applyToolBindings('mpr', 'Crosshairs', {
10743
+ replaceExisting: true
10744
+ });
10745
+ }
10746
+ toolGroupService?.removePersistedToolBindings('mpr', 'Crosshairs');
10739
10747
  };
10740
10748
  const displayNames = react.useMemo(() => {
10741
10749
  if (typeof Intl === 'undefined' || typeof Intl.DisplayNames !== 'function') {
@@ -10840,12 +10848,10 @@ function UserPreferencesModalDefault({
10840
10848
  modifierKey: Number(state.crosshairModifier)
10841
10849
  }];
10842
10850
  toolGroupService.setToolBindings('mpr', 'Crosshairs', bindings);
10843
- toolGroupService.applyToolBindings('mpr', 'Crosshairs');
10844
- localStorage.setItem(toolBindingsStorageKey, JSON.stringify({
10845
- mpr: {
10846
- Crosshairs: bindings
10847
- }
10848
- }));
10851
+ toolGroupService.applyToolBindings('mpr', 'Crosshairs', {
10852
+ replaceExisting: true
10853
+ });
10854
+ toolGroupService.persistToolBindings('mpr', 'Crosshairs', bindings);
10849
10855
  }
10850
10856
  src/* hotkeys */.ot.stopRecord();
10851
10857
  src/* hotkeys */.ot.unpause();
@@ -683,7 +683,7 @@ expose(workerOperations);
683
683
  /******/ // This function allow to reference async chunks and chunks that the entrypoint depends on
684
684
  /******/ __webpack_require__.u = (chunkId) => {
685
685
  /******/ // return url for filenames based on template
686
- /******/ return "" + chunkId + ".bundle." + "3738008038e70525764f" + ".js";
686
+ /******/ return "" + chunkId + ".bundle." + "479332d662ffe08d1f92" + ".js";
687
687
  /******/ };
688
688
  /******/ })();
689
689
  /******/
@@ -18682,6 +18682,7 @@ class ToolGroupService {
18682
18682
  this.customizationService = void 0;
18683
18683
  this.toolGroupIds = new Set();
18684
18684
  this.toolBindingsMap = new Map();
18685
+ this.defaultToolBindingsMap = new Map();
18685
18686
  /**
18686
18687
  * Service-specific
18687
18688
  */
@@ -18772,6 +18773,7 @@ class ToolGroupService {
18772
18773
  dist_esm.ToolGroupManager.destroy();
18773
18774
  this.toolGroupIds = new Set();
18774
18775
  this.toolBindingsMap.clear();
18776
+ this.defaultToolBindingsMap.clear();
18775
18777
  esm.eventTarget.removeEventListener(dist_esm.Enums.Events.TOOL_ACTIVATED, this._onToolActivated);
18776
18778
  }
18777
18779
  destroyToolGroup(toolGroupId) {
@@ -18873,9 +18875,43 @@ class ToolGroupService {
18873
18875
  if (!this.toolBindingsMap.has(toolGroupId)) {
18874
18876
  this.toolBindingsMap.set(toolGroupId, new Map());
18875
18877
  }
18876
- this.toolBindingsMap.get(toolGroupId).set(toolName, bindings);
18878
+ this.toolBindingsMap.get(toolGroupId).set(toolName, this._cloneToolBindings(bindings));
18877
18879
  }
18878
- applyToolBindings(toolGroupId, toolName) {
18880
+ getDefaultToolBindings(toolGroupId, toolName) {
18881
+ const defaultBindings = this.defaultToolBindingsMap.get(toolGroupId)?.get(toolName);
18882
+ return defaultBindings ? this._cloneToolBindings(defaultBindings) : undefined;
18883
+ }
18884
+ persistToolBindings(toolGroupId, toolName, bindings) {
18885
+ const persistedBindings = this._readPersistedToolBindings();
18886
+ if (!persistedBindings[toolGroupId]) {
18887
+ persistedBindings[toolGroupId] = {};
18888
+ }
18889
+ persistedBindings[toolGroupId][toolName] = bindings;
18890
+ this._writePersistedToolBindings(persistedBindings);
18891
+ }
18892
+ removePersistedToolBindings(toolGroupId, toolName) {
18893
+ const persistedBindings = this._readPersistedToolBindings();
18894
+ if (!persistedBindings[toolGroupId]) {
18895
+ return;
18896
+ }
18897
+ if (toolName) {
18898
+ delete persistedBindings[toolGroupId][toolName];
18899
+ if (!Object.keys(persistedBindings[toolGroupId]).length) {
18900
+ delete persistedBindings[toolGroupId];
18901
+ }
18902
+ } else {
18903
+ delete persistedBindings[toolGroupId];
18904
+ }
18905
+ this._writePersistedToolBindings(persistedBindings);
18906
+ }
18907
+
18908
+ /**
18909
+ * Applies the currently tracked bindings to the runtime tool instance.
18910
+ *
18911
+ * Note: this method may activate tools that are currently Passive or Enabled.
18912
+ * Assigning bindings is treated as making the tool interactable.
18913
+ */
18914
+ applyToolBindings(toolGroupId, toolName, options = {}) {
18879
18915
  const toolGroup = dist_esm.ToolGroupManager.getToolGroup(toolGroupId);
18880
18916
  if (!toolGroup || !toolGroup.hasTool(toolName)) {
18881
18917
  return;
@@ -18888,6 +18924,10 @@ class ToolGroupService {
18888
18924
  mode
18889
18925
  } = toolGroup.getToolOptions(toolName);
18890
18926
  if (mode === dist_esm.Enums.ToolModes.Active || mode === dist_esm.Enums.ToolModes.Passive || mode === dist_esm.Enums.ToolModes.Enabled) {
18927
+ if (options.replaceExisting) {
18928
+ // Opt-in behavior for callers that need replacement semantics.
18929
+ toolGroup.setToolDisabled(toolName);
18930
+ }
18891
18931
  toolGroup.setToolActive(toolName, {
18892
18932
  bindings
18893
18933
  });
@@ -18920,6 +18960,7 @@ class ToolGroupService {
18920
18960
  }) => {
18921
18961
  if (bindings) {
18922
18962
  this.setToolBindings(toolGroup.id, toolName, bindings);
18963
+ this._setDefaultToolBindingsIfMissing(toolGroup.id, toolName, bindings);
18923
18964
  }
18924
18965
  toolGroup.setToolActive(toolName, {
18925
18966
  bindings
@@ -18933,6 +18974,7 @@ class ToolGroupService {
18933
18974
  }) => {
18934
18975
  if (bindings) {
18935
18976
  this.setToolBindings(toolGroup.id, toolName, bindings);
18977
+ this._setDefaultToolBindingsIfMissing(toolGroup.id, toolName, bindings);
18936
18978
  }
18937
18979
  toolGroup.setToolPassive(toolName);
18938
18980
  });
@@ -18944,6 +18986,7 @@ class ToolGroupService {
18944
18986
  }) => {
18945
18987
  if (bindings) {
18946
18988
  this.setToolBindings(toolGroup.id, toolName, bindings);
18989
+ this._setDefaultToolBindingsIfMissing(toolGroup.id, toolName, bindings);
18947
18990
  }
18948
18991
  toolGroup.setToolEnabled(toolName);
18949
18992
  });
@@ -18955,11 +18998,21 @@ class ToolGroupService {
18955
18998
  }) => {
18956
18999
  if (bindings) {
18957
19000
  this.setToolBindings(toolGroup.id, toolName, bindings);
19001
+ this._setDefaultToolBindingsIfMissing(toolGroup.id, toolName, bindings);
18958
19002
  }
18959
19003
  toolGroup.setToolDisabled(toolName);
18960
19004
  });
18961
19005
  }
18962
19006
  }
19007
+ _setDefaultToolBindingsIfMissing(toolGroupId, toolName, bindings) {
19008
+ if (!this.defaultToolBindingsMap.has(toolGroupId)) {
19009
+ this.defaultToolBindingsMap.set(toolGroupId, new Map());
19010
+ }
19011
+ const toolMap = this.defaultToolBindingsMap.get(toolGroupId);
19012
+ if (!toolMap.has(toolName)) {
19013
+ toolMap.set(toolName, this._cloneToolBindings(bindings));
19014
+ }
19015
+ }
18963
19016
  _addTools(toolGroup, tools) {
18964
19017
  const addTools = tools => {
18965
19018
  tools.forEach(({
@@ -18992,23 +19045,55 @@ class ToolGroupService {
18992
19045
  }
18993
19046
  }
18994
19047
  _loadPersistedBindings(toolGroupId) {
19048
+ const toolGroupBindings = this._readPersistedToolBindings()[toolGroupId];
19049
+ if (!toolGroupBindings) {
19050
+ return;
19051
+ }
19052
+ const toolGroup = dist_esm.ToolGroupManager.getToolGroup(toolGroupId);
19053
+ for (const [toolName, bindings] of Object.entries(toolGroupBindings)) {
19054
+ this.setToolBindings(toolGroupId, toolName, bindings);
19055
+ if (!toolGroup || !toolGroup.hasTool(toolName)) {
19056
+ continue;
19057
+ }
19058
+ const {
19059
+ mode
19060
+ } = toolGroup.getToolOptions(toolName);
19061
+ if (mode === dist_esm.Enums.ToolModes.Active) {
19062
+ this.applyToolBindings(toolGroupId, toolName, {
19063
+ replaceExisting: true
19064
+ });
19065
+ }
19066
+ }
19067
+ }
19068
+ _readPersistedToolBindings() {
18995
19069
  try {
18996
19070
  const stored = localStorage.getItem(this._getToolBindingsStorageKey());
18997
19071
  if (!stored) {
18998
- return;
19072
+ return {};
18999
19073
  }
19000
19074
  const parsed = JSON.parse(stored);
19001
- const toolGroupBindings = parsed[toolGroupId];
19002
- if (!toolGroupBindings) {
19003
- return;
19004
- }
19005
- for (const [toolName, bindings] of Object.entries(toolGroupBindings)) {
19006
- this.setToolBindings(toolGroupId, toolName, bindings);
19075
+ if (!parsed || typeof parsed !== 'object') {
19076
+ return {};
19007
19077
  }
19078
+ return parsed;
19008
19079
  } catch {
19009
19080
  // ignore corrupt localStorage
19081
+ return {};
19010
19082
  }
19011
19083
  }
19084
+ _writePersistedToolBindings(bindings) {
19085
+ const storageKey = this._getToolBindingsStorageKey();
19086
+ if (!Object.keys(bindings).length) {
19087
+ localStorage.removeItem(storageKey);
19088
+ return;
19089
+ }
19090
+ localStorage.setItem(storageKey, JSON.stringify(bindings));
19091
+ }
19092
+ _cloneToolBindings(bindings) {
19093
+ return bindings.map(binding => ({
19094
+ ...binding
19095
+ }));
19096
+ }
19012
19097
  _getToolBindingsStorageKey() {
19013
19098
  const customizationValue = this.customizationService?.getCustomization('ohif.userPreferences.toolBindingsStorageKey');
19014
19099
  return typeof customizationValue === 'string' && customizationValue.length > 0 ? customizationValue : 'user-preferred-tool-bindings';
@@ -2375,16 +2375,16 @@ const G = getGlobal();
2375
2375
  const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;
2376
2376
 
2377
2377
  const isFormData = (thing) => {
2378
- let kind;
2379
- return thing && (
2380
- (FormDataCtor && thing instanceof FormDataCtor) || (
2381
- isFunction(thing.append) && (
2382
- (kind = kindOf(thing)) === 'formdata' ||
2383
- // detect form-data instance
2384
- (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')
2385
- )
2386
- )
2387
- );
2378
+ if (!thing) return false;
2379
+ if (FormDataCtor && thing instanceof FormDataCtor) return true;
2380
+ // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9).
2381
+ const proto = getPrototypeOf(thing);
2382
+ if (!proto || proto === Object.prototype) return false;
2383
+ if (!isFunction(thing.append)) return false;
2384
+ const kind = kindOf(thing);
2385
+ return kind === 'formdata' ||
2386
+ // detect form-data instance
2387
+ (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]');
2388
2388
  };
2389
2389
 
2390
2390
  /**
@@ -3056,40 +3056,40 @@ class AxiosError extends Error {
3056
3056
  return axiosError;
3057
3057
  }
3058
3058
 
3059
- /**
3060
- * Create an Error with the specified message, config, error code, request and response.
3061
- *
3062
- * @param {string} message The error message.
3063
- * @param {string} [code] The error code (for example, 'ECONNABORTED').
3064
- * @param {Object} [config] The config.
3065
- * @param {Object} [request] The request.
3066
- * @param {Object} [response] The response.
3067
- *
3068
- * @returns {Error} The created error.
3069
- */
3070
- constructor(message, code, config, request, response) {
3071
- super(message);
3072
-
3073
- // Make message enumerable to maintain backward compatibility
3074
- // The native Error constructor sets message as non-enumerable,
3075
- // but axios < v1.13.3 had it as enumerable
3076
- Object.defineProperty(this, 'message', {
3077
- value: message,
3078
- enumerable: true,
3079
- writable: true,
3080
- configurable: true
3081
- });
3082
-
3083
- this.name = 'AxiosError';
3084
- this.isAxiosError = true;
3085
- code && (this.code = code);
3086
- config && (this.config = config);
3087
- request && (this.request = request);
3088
- if (response) {
3089
- this.response = response;
3090
- this.status = response.status;
3091
- }
3059
+ /**
3060
+ * Create an Error with the specified message, config, error code, request and response.
3061
+ *
3062
+ * @param {string} message The error message.
3063
+ * @param {string} [code] The error code (for example, 'ECONNABORTED').
3064
+ * @param {Object} [config] The config.
3065
+ * @param {Object} [request] The request.
3066
+ * @param {Object} [response] The response.
3067
+ *
3068
+ * @returns {Error} The created error.
3069
+ */
3070
+ constructor(message, code, config, request, response) {
3071
+ super(message);
3072
+
3073
+ // Make message enumerable to maintain backward compatibility
3074
+ // The native Error constructor sets message as non-enumerable,
3075
+ // but axios < v1.13.3 had it as enumerable
3076
+ Object.defineProperty(this, 'message', {
3077
+ value: message,
3078
+ enumerable: true,
3079
+ writable: true,
3080
+ configurable: true,
3081
+ });
3082
+
3083
+ this.name = 'AxiosError';
3084
+ this.isAxiosError = true;
3085
+ code && (this.code = code);
3086
+ config && (this.config = config);
3087
+ request && (this.request = request);
3088
+ if (response) {
3089
+ this.response = response;
3090
+ this.status = response.status;
3092
3091
  }
3092
+ }
3093
3093
 
3094
3094
  toJSON() {
3095
3095
  return {
@@ -3125,6 +3125,7 @@ AxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';
3125
3125
  AxiosError.ERR_CANCELED = 'ERR_CANCELED';
3126
3126
  AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';
3127
3127
  AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';
3128
+ AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED';
3128
3129
 
3129
3130
  /* harmony default export */ const core_AxiosError = (AxiosError);
3130
3131
 
@@ -3251,6 +3252,7 @@ function toFormData(obj, formData, options) {
3251
3252
  const dots = options.dots;
3252
3253
  const indexes = options.indexes;
3253
3254
  const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);
3255
+ const maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth;
3254
3256
  const useBlob = _Blob && utils.isSpecCompliantForm(formData);
3255
3257
 
3256
3258
  if (!utils.isFunction(visitor)) {
@@ -3343,9 +3345,16 @@ function toFormData(obj, formData, options) {
3343
3345
  isVisitable,
3344
3346
  });
3345
3347
 
3346
- function build(value, path) {
3348
+ function build(value, path, depth = 0) {
3347
3349
  if (utils.isUndefined(value)) return;
3348
3350
 
3351
+ if (depth > maxDepth) {
3352
+ throw new core_AxiosError(
3353
+ 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,
3354
+ core_AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED
3355
+ );
3356
+ }
3357
+
3349
3358
  if (stack.indexOf(value) !== -1) {
3350
3359
  throw Error('Circular reference detected in ' + path.join('.'));
3351
3360
  }
@@ -3358,7 +3367,7 @@ function toFormData(obj, formData, options) {
3358
3367
  visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);
3359
3368
 
3360
3369
  if (result === true) {
3361
- build(el, path ? path.concat(key) : [key]);
3370
+ build(el, path ? path.concat(key) : [key], depth + 1);
3362
3371
  }
3363
3372
  });
3364
3373
 
@@ -3397,9 +3406,8 @@ function encode(str) {
3397
3406
  ')': '%29',
3398
3407
  '~': '%7E',
3399
3408
  '%20': '+',
3400
- '%00': '\x00',
3401
3409
  };
3402
- return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {
3410
+ return encodeURIComponent(str).replace(/[!'()~]|%20/g, function replacer(match) {
3403
3411
  return charMap[match];
3404
3412
  });
3405
3413
  }
@@ -3762,7 +3770,9 @@ function formDataToJSON(formData) {
3762
3770
 
3763
3771
  if (isLast) {
3764
3772
  if (utils.hasOwnProp(target, name)) {
3765
- target[name] = [target[name], value];
3773
+ target[name] = utils.isArray(target[name])
3774
+ ? target[name].concat(value)
3775
+ : [target[name], value];
3766
3776
  } else {
3767
3777
  target[name] = value;
3768
3778
  }
@@ -3809,6 +3819,8 @@ function formDataToJSON(formData) {
3809
3819
 
3810
3820
 
3811
3821
 
3822
+ const own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined);
3823
+
3812
3824
  /**
3813
3825
  * It takes a string, tries to parse it, and if it fails, it returns the stringified version
3814
3826
  * of the input
@@ -3876,20 +3888,22 @@ const defaults = {
3876
3888
  let isFileList;
3877
3889
 
3878
3890
  if (isObjectPayload) {
3891
+ const formSerializer = own(this, 'formSerializer');
3879
3892
  if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {
3880
- return toURLEncodedForm(data, this.formSerializer).toString();
3893
+ return toURLEncodedForm(data, formSerializer).toString();
3881
3894
  }
3882
3895
 
3883
3896
  if (
3884
3897
  (isFileList = utils.isFileList(data)) ||
3885
3898
  contentType.indexOf('multipart/form-data') > -1
3886
3899
  ) {
3887
- const _FormData = this.env && this.env.FormData;
3900
+ const env = own(this, 'env');
3901
+ const _FormData = env && env.FormData;
3888
3902
 
3889
3903
  return helpers_toFormData(
3890
3904
  isFileList ? { 'files[]': data } : data,
3891
3905
  _FormData && new _FormData(),
3892
- this.formSerializer
3906
+ formSerializer
3893
3907
  );
3894
3908
  }
3895
3909
  }
@@ -3905,9 +3919,10 @@ const defaults = {
3905
3919
 
3906
3920
  transformResponse: [
3907
3921
  function transformResponse(data) {
3908
- const transitional = this.transitional || defaults.transitional;
3922
+ const transitional = own(this, 'transitional') || defaults.transitional;
3909
3923
  const forcedJSONParsing = transitional && transitional.forcedJSONParsing;
3910
- const JSONRequested = this.responseType === 'json';
3924
+ const responseType = own(this, 'responseType');
3925
+ const JSONRequested = responseType === 'json';
3911
3926
 
3912
3927
  if (utils.isResponse(data) || utils.isReadableStream(data)) {
3913
3928
  return data;
@@ -3916,17 +3931,17 @@ const defaults = {
3916
3931
  if (
3917
3932
  data &&
3918
3933
  utils.isString(data) &&
3919
- ((forcedJSONParsing && !this.responseType) || JSONRequested)
3934
+ ((forcedJSONParsing && !responseType) || JSONRequested)
3920
3935
  ) {
3921
3936
  const silentJSONParsing = transitional && transitional.silentJSONParsing;
3922
3937
  const strictJSONParsing = !silentJSONParsing && JSONRequested;
3923
3938
 
3924
3939
  try {
3925
- return JSON.parse(data, this.parseReviver);
3940
+ return JSON.parse(data, own(this, 'parseReviver'));
3926
3941
  } catch (e) {
3927
3942
  if (strictJSONParsing) {
3928
3943
  if (e.name === 'SyntaxError') {
3929
- throw core_AxiosError.from(e, core_AxiosError.ERR_BAD_RESPONSE, this, null, this.response);
3944
+ throw core_AxiosError.from(e, core_AxiosError.ERR_BAD_RESPONSE, this, null, own(this, 'response'));
3930
3945
  }
3931
3946
  throw e;
3932
3947
  }
@@ -4051,41 +4066,41 @@ const ignoreDuplicateOf = utils.toObjectSet([
4051
4066
 
4052
4067
  const $internals = Symbol('internals');
4053
4068
 
4054
- const isValidHeaderValue = (value) => !/[\r\n]/.test(value);
4069
+ const INVALID_HEADER_VALUE_CHARS_RE = /[^\x09\x20-\x7E\x80-\xFF]/g;
4055
4070
 
4056
- function assertValidHeaderValue(value, header) {
4057
- if (value === false || value == null) {
4058
- return;
4059
- }
4071
+ function trimSPorHTAB(str) {
4072
+ let start = 0;
4073
+ let end = str.length;
4060
4074
 
4061
- if (utils.isArray(value)) {
4062
- value.forEach((v) => assertValidHeaderValue(v, header));
4063
- return;
4064
- }
4075
+ while (start < end) {
4076
+ const code = str.charCodeAt(start);
4065
4077
 
4066
- if (!isValidHeaderValue(String(value))) {
4067
- throw new Error(`Invalid character in header content ["${header}"]`);
4068
- }
4069
- }
4070
-
4071
- function normalizeHeader(header) {
4072
- return header && String(header).trim().toLowerCase();
4073
- }
4078
+ if (code !== 0x09 && code !== 0x20) {
4079
+ break;
4080
+ }
4074
4081
 
4075
- function stripTrailingCRLF(str) {
4076
- let end = str.length;
4082
+ start += 1;
4083
+ }
4077
4084
 
4078
- while (end > 0) {
4079
- const charCode = str.charCodeAt(end - 1);
4085
+ while (end > start) {
4086
+ const code = str.charCodeAt(end - 1);
4080
4087
 
4081
- if (charCode !== 10 && charCode !== 13) {
4088
+ if (code !== 0x09 && code !== 0x20) {
4082
4089
  break;
4083
4090
  }
4084
4091
 
4085
4092
  end -= 1;
4086
4093
  }
4087
4094
 
4088
- return end === str.length ? str : str.slice(0, end);
4095
+ return start === 0 && end === str.length ? str : str.slice(start, end);
4096
+ }
4097
+
4098
+ function normalizeHeader(header) {
4099
+ return header && String(header).trim().toLowerCase();
4100
+ }
4101
+
4102
+ function sanitizeHeaderValue(str) {
4103
+ return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, ''));
4089
4104
  }
4090
4105
 
4091
4106
  function normalizeValue(value) {
@@ -4093,7 +4108,7 @@ function normalizeValue(value) {
4093
4108
  return value;
4094
4109
  }
4095
4110
 
4096
- return utils.isArray(value) ? value.map(normalizeValue) : stripTrailingCRLF(String(value));
4111
+ return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(String(value));
4097
4112
  }
4098
4113
 
4099
4114
  function parseTokens(str) {
@@ -4175,7 +4190,6 @@ class AxiosHeaders {
4175
4190
  _rewrite === true ||
4176
4191
  (_rewrite === undefined && self[key] !== false)
4177
4192
  ) {
4178
- assertValidHeaderValue(_value, _header);
4179
4193
  self[key || _header] = normalizeValue(_value);
4180
4194
  }
4181
4195
  }
@@ -4638,13 +4652,13 @@ const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
4638
4652
  const _speedometer = helpers_speedometer(50, 250);
4639
4653
 
4640
4654
  return helpers_throttle((e) => {
4641
- const loaded = e.loaded;
4655
+ const rawLoaded = e.loaded;
4642
4656
  const total = e.lengthComputable ? e.total : undefined;
4643
- const progressBytes = loaded - bytesNotified;
4657
+ const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded;
4658
+ const progressBytes = Math.max(0, loaded - bytesNotified);
4644
4659
  const rate = _speedometer(progressBytes);
4645
- const inRange = loaded <= total;
4646
4660
 
4647
- bytesNotified = loaded;
4661
+ bytesNotified = Math.max(bytesNotified, loaded);
4648
4662
 
4649
4663
  const data = {
4650
4664
  loaded,
@@ -4652,7 +4666,7 @@ const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
4652
4666
  progress: total ? loaded / total : undefined,
4653
4667
  bytes: progressBytes,
4654
4668
  rate: rate ? rate : undefined,
4655
- estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
4669
+ estimated: rate && total ? (total - loaded) / rate : undefined,
4656
4670
  event: e,
4657
4671
  lengthComputable: total != null,
4658
4672
  [isDownloadStream ? 'download' : 'upload']: true,
@@ -4805,7 +4819,7 @@ function combineURLs(baseURL, relativeURL) {
4805
4819
  */
4806
4820
  function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {
4807
4821
  let isRelativeUrl = !isAbsoluteURL(requestedURL);
4808
- if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {
4822
+ if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {
4809
4823
  return combineURLs(baseURL, requestedURL);
4810
4824
  }
4811
4825
  return requestedURL;
@@ -4831,7 +4845,18 @@ const headersToObject = (thing) => (thing instanceof core_AxiosHeaders ? { ...th
4831
4845
  function mergeConfig(config1, config2) {
4832
4846
  // eslint-disable-next-line no-param-reassign
4833
4847
  config2 = config2 || {};
4834
- const config = {};
4848
+
4849
+ // Use a null-prototype object so that downstream reads such as `config.auth`
4850
+ // or `config.baseURL` cannot inherit polluted values from Object.prototype
4851
+ // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable
4852
+ // own slot to preserve ergonomics for user code that relies on it.
4853
+ const config = Object.create(null);
4854
+ Object.defineProperty(config, 'hasOwnProperty', {
4855
+ value: Object.prototype.hasOwnProperty,
4856
+ enumerable: false,
4857
+ writable: true,
4858
+ configurable: true,
4859
+ });
4835
4860
 
4836
4861
  function getMergedValue(target, source, prop, caseless) {
4837
4862
  if (utils.isPlainObject(target) && utils.isPlainObject(source)) {
@@ -4870,9 +4895,9 @@ function mergeConfig(config1, config2) {
4870
4895
 
4871
4896
  // eslint-disable-next-line consistent-return
4872
4897
  function mergeDirectKeys(a, b, prop) {
4873
- if (prop in config2) {
4898
+ if (utils.hasOwnProp(config2, prop)) {
4874
4899
  return getMergedValue(a, b);
4875
- } else if (prop in config1) {
4900
+ } else if (utils.hasOwnProp(config1, prop)) {
4876
4901
  return getMergedValue(undefined, a);
4877
4902
  }
4878
4903
  }
@@ -4904,6 +4929,7 @@ function mergeConfig(config1, config2) {
4904
4929
  httpsAgent: defaultToConfig2,
4905
4930
  cancelToken: defaultToConfig2,
4906
4931
  socketPath: defaultToConfig2,
4932
+ allowedSocketPaths: defaultToConfig2,
4907
4933
  responseEncoding: defaultToConfig2,
4908
4934
  validateStatus: mergeDirectKeys,
4909
4935
  headers: (a, b, prop) =>
@@ -4913,7 +4939,9 @@ function mergeConfig(config1, config2) {
4913
4939
  utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {
4914
4940
  if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;
4915
4941
  const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;
4916
- const configValue = merge(config1[prop], config2[prop], prop);
4942
+ const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;
4943
+ const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;
4944
+ const configValue = merge(a, b, prop);
4917
4945
  (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
4918
4946
  });
4919
4947
 
@@ -4933,12 +4961,24 @@ function mergeConfig(config1, config2) {
4933
4961
  /* harmony default export */ const resolveConfig = ((config) => {
4934
4962
  const newConfig = mergeConfig({}, config);
4935
4963
 
4936
- let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;
4964
+ // Read only own properties to prevent prototype pollution gadgets
4965
+ // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj.
4966
+ const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);
4967
+
4968
+ const data = own('data');
4969
+ let withXSRFToken = own('withXSRFToken');
4970
+ const xsrfHeaderName = own('xsrfHeaderName');
4971
+ const xsrfCookieName = own('xsrfCookieName');
4972
+ let headers = own('headers');
4973
+ const auth = own('auth');
4974
+ const baseURL = own('baseURL');
4975
+ const allowAbsoluteUrls = own('allowAbsoluteUrls');
4976
+ const url = own('url');
4937
4977
 
4938
4978
  newConfig.headers = headers = core_AxiosHeaders.from(headers);
4939
4979
 
4940
4980
  newConfig.url = buildURL(
4941
- buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),
4981
+ buildFullPath(baseURL, url, allowAbsoluteUrls),
4942
4982
  config.params,
4943
4983
  config.paramsSerializer
4944
4984
  );
@@ -4977,10 +5017,18 @@ function mergeConfig(config1, config2) {
4977
5017
  // Specifically not if we're in a web worker, or react-native.
4978
5018
 
4979
5019
  if (platform.hasStandardBrowserEnv) {
4980
- withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
5020
+ if (utils.isFunction(withXSRFToken)) {
5021
+ withXSRFToken = withXSRFToken(newConfig);
5022
+ }
4981
5023
 
4982
- if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {
4983
- // Add xsrf header
5024
+ // Strict boolean check prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)
5025
+ // and misconfigurations (e.g. "false") from short-circuiting the same-origin check and leaking
5026
+ // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c.
5027
+ const shouldSendXSRF =
5028
+ withXSRFToken === true ||
5029
+ (withXSRFToken == null && isURLSameOrigin(newConfig.url));
5030
+
5031
+ if (shouldSendXSRF) {
4984
5032
  const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);
4985
5033
 
4986
5034
  if (xsrfValue) {
@@ -5430,18 +5478,20 @@ const factory = (env) => {
5430
5478
  test(() => {
5431
5479
  let duplexAccessed = false;
5432
5480
 
5433
- const body = new fetch_ReadableStream();
5434
-
5435
- const hasContentType = new Request(platform.origin, {
5436
- body,
5481
+ const request = new Request(platform.origin, {
5482
+ body: new fetch_ReadableStream(),
5437
5483
  method: 'POST',
5438
5484
  get duplex() {
5439
5485
  duplexAccessed = true;
5440
5486
  return 'half';
5441
5487
  },
5442
- }).headers.has('Content-Type');
5488
+ });
5443
5489
 
5444
- body.cancel();
5490
+ const hasContentType = request.headers.has('Content-Type');
5491
+
5492
+ if (request.body != null) {
5493
+ request.body.cancel();
5494
+ }
5445
5495
 
5446
5496
  return duplexAccessed && !hasContentType;
5447
5497
  });
@@ -5585,6 +5635,19 @@ const factory = (env) => {
5585
5635
  // see https://github.com/cloudflare/workerd/issues/902
5586
5636
  const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;
5587
5637
 
5638
+ // If data is FormData and Content-Type is multipart/form-data without boundary,
5639
+ // delete it so fetch can set it correctly with the boundary
5640
+ if (utils.isFormData(data)) {
5641
+ const contentType = headers.getContentType();
5642
+ if (
5643
+ contentType &&
5644
+ /^multipart\/form-data/i.test(contentType) &&
5645
+ !/boundary=/i.test(contentType)
5646
+ ) {
5647
+ headers.delete('content-type');
5648
+ }
5649
+ }
5650
+
5588
5651
  const resolvedOptions = {
5589
5652
  ...fetchOptions,
5590
5653
  signal: composedSignal,
@@ -5913,7 +5976,7 @@ function dispatchRequest(config) {
5913
5976
  }
5914
5977
 
5915
5978
  ;// ../../../node_modules/axios/lib/env/data.js
5916
- const VERSION = "1.15.0";
5979
+ const VERSION = "1.15.2";
5917
5980
  ;// ../../../node_modules/axios/lib/helpers/validator.js
5918
5981
 
5919
5982
 
@@ -6003,7 +6066,9 @@ function assertOptions(options, schema, allowUnknown) {
6003
6066
  let i = keys.length;
6004
6067
  while (i-- > 0) {
6005
6068
  const opt = keys[i];
6006
- const validator = schema[opt];
6069
+ // Use hasOwnProperty so a polluted Object.prototype.<opt> cannot supply
6070
+ // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj.
6071
+ const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;
6007
6072
  if (validator) {
6008
6073
  const value = options[opt];
6009
6074
  const result = value === undefined || validator(value, opt, options);
@@ -80777,7 +80777,7 @@ const detectionOptions = {
80777
80777
  }
80778
80778
  });
80779
80779
  ;// ../../i18n/package.json
80780
- const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.13.0-beta.66"}');
80780
+ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.13.0-beta.68"}');
80781
80781
  ;// ../../i18n/src/utils.js
80782
80782
  const languagesMap = {
80783
80783
  ar: 'Arabic',
@@ -397615,7 +397615,7 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
397615
397615
  /******/ // This function allow to reference async chunks
397616
397616
  /******/ __webpack_require__.u = (chunkId) => {
397617
397617
  /******/ // return url for filenames based on template
397618
- /******/ return "" + ({"572":"polySeg","2007":"interpolation","3054":"histogram-worker","3694":"compute"}[chunkId] || chunkId) + ".bundle." + {"85":"856bfa0f56bba25ff5fb","213":"364a8317839173e8ea12","572":"e1f6f05d81ea1352bef3","732":"ea6f9d8504e37e01a208","1459":"a159e0dd401123bf9e48","1608":"26306ea38618db59eff7","1927":"be67b3aafe238ca9f191","1933":"110d30b6901499a2103d","2007":"2559b710030605fc2bc6","2018":"55568a2358323282a1d8","2075":"23265b8e7597c398db4f","2108":"aea8d3b39486dd5ab39e","2424":"ad9d0bbeb7723bf434dd","2701":"6873805ddfdccc7a8b1e","2851":"daa0f5f8bca6492d7033","3054":"a2a50c4674d99c619ca7","3138":"1b2ed03742a5cf16d22b","3461":"f499a235aa460895003e","3694":"b7c2ea55f1a69f4a736b","3754":"fd4b67c2a29c4bc4a840","4202":"4fcd0de412907efd5b53","4287":"b7840e7b94cbbc102236","4406":"573d234b4641d23cf8db","4507":"2534b564fe3f0ce90801","4579":"0a6b2f49a7e136a79e37","4819":"11a2ec62c5d49262edf1","5015":"6dc4e690443e7d5215f6","5028":"723ddddb2203c1c0d2e7","5261":"2655560097e9250eac44","5457":"180ec36f95f7dfbdb63c","5485":"2149d00e98cfcecb114b","5802":"26f84db0ff8851532c36","6027":"ad09ef0a6ab5ab0100ad","6939":"41fbdef87597b5172ec6","7159":"fb9df255868960f69765","7166":"04b935471132c7d203f2","7431":"5e14641f2c71e852abe7","7639":"29a1a0e1df7929296a3e","8094":"148a66619607e37cbf19","8305":"63b6a800160f4da7c372","8499":"b9cee1e292a04237794a","8558":"685196a726b715d41ff0","8583":"a7afd7affafa244e55e7","9205":"ed7bce8436a7a431955e","9567":"ff782480a4c66e306027","9845":"8c450e8d65a78a5afcd3","9862":"a5f7925840868fa4ecdb","9927":"e4186f993674729cef10"}[chunkId] + ".js";
397618
+ /******/ return "" + ({"572":"polySeg","2007":"interpolation","3054":"histogram-worker","3694":"compute"}[chunkId] || chunkId) + ".bundle." + {"85":"69ed0f5cd48a2416a0a7","213":"090350c45f9d6b691fad","572":"e1f6f05d81ea1352bef3","732":"ea6f9d8504e37e01a208","1459":"4441b0daff1e7d1e475b","1608":"26306ea38618db59eff7","1927":"be67b3aafe238ca9f191","1933":"5f85010474c1a26d5b2c","2007":"829844ff3f72f5645f29","2018":"e758b183c56ccd7677f4","2075":"23265b8e7597c398db4f","2108":"aea8d3b39486dd5ab39e","2424":"67e7eb608cce3af35b92","2701":"6873805ddfdccc7a8b1e","2851":"d13bb9fdd21d896df73d","3054":"a2a50c4674d99c619ca7","3138":"d7f49154c5d6271c9f24","3461":"9f7098f3ea722176acf6","3694":"b7c2ea55f1a69f4a736b","3754":"fd4b67c2a29c4bc4a840","4202":"4fcd0de412907efd5b53","4287":"b7840e7b94cbbc102236","4406":"573d234b4641d23cf8db","4507":"e964cd8ebfa78f345b34","4579":"0a6b2f49a7e136a79e37","4819":"60695cca9169bb3010f6","5015":"6470ea8212884be78cbc","5028":"52628ca9cb97df509a06","5261":"2655560097e9250eac44","5457":"708c1cd4969fe0167956","5485":"648fe26db2f1f24faace","5802":"26f84db0ff8851532c36","6027":"0a9936fc1cf3af4e9841","6939":"41fbdef87597b5172ec6","7159":"fb9df255868960f69765","7166":"09a58966db6c16ea7b49","7431":"5e14641f2c71e852abe7","7639":"8fd93608aa841bda067b","8094":"148a66619607e37cbf19","8305":"11c24bdac62073fdf9b5","8499":"1433b326d312ac8d8b1f","8558":"d9d0faa6b079173a1de5","8583":"2ac4f7476f2b3e026260","9205":"ed7bce8436a7a431955e","9567":"ff782480a4c66e306027","9845":"8c450e8d65a78a5afcd3","9862":"a5f7925840868fa4ecdb","9927":"a112e60a246078248216"}[chunkId] + ".js";
397619
397619
  /******/ };
397620
397620
  /******/ })();
397621
397621
  /******/
package/dist/index.html CHANGED
@@ -3,4 +3,4 @@
3
3
  return import(moduleId);
4
4
  }
5
5
 
6
- window.PUBLIC_URL = '/';</script><script defer="defer" src="/app.bundle.f03d71919b8eff3b1f22.js"></script><link href="/app.bundle.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="react-portal"></div><div id="root"></div></body></html>
6
+ window.PUBLIC_URL = '/';</script><script defer="defer" src="/app.bundle.e5ebf5742695ab738d6d.js"></script><link href="/app.bundle.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="react-portal"></div><div id="root"></div></body></html>
@@ -637,7 +637,7 @@ function generateUUID() {
637
637
  /******/ // This function allow to reference async chunks and chunks that the entrypoint depends on
638
638
  /******/ __webpack_require__.u = (chunkId) => {
639
639
  /******/ // return url for filenames based on template
640
- /******/ return "" + chunkId + ".bundle." + {"2516":"f62228e9a800de8d4b31","5491":"4866d2ecb20dd089e071","5830":"791019deddd536980a11","6354":"929febcf6d326e582e00","6376":"738c873196491232acb6","7190":"3738008038e70525764f"}[chunkId] + ".js";
640
+ /******/ return "" + chunkId + ".bundle." + {"2516":"f62228e9a800de8d4b31","5491":"4866d2ecb20dd089e071","5830":"791019deddd536980a11","6354":"929febcf6d326e582e00","6376":"527820a5cb1eece2a8d2","7190":"479332d662ffe08d1f92"}[chunkId] + ".js";
641
641
  /******/ };
642
642
  /******/ })();
643
643
  /******/
package/dist/sw.js CHANGED
@@ -50,7 +50,7 @@ self.addEventListener('message', event => {
50
50
  }
51
51
  }
52
52
  });
53
- workbox.precaching.precacheAndRoute([{'revision':null,'url':'/1459.bundle.a159e0dd401123bf9e48.js'},{'revision':null,'url':'/1608.bundle.26306ea38618db59eff7.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/1608.css'},{'revision':null,'url':'/17dd54813d5acc10bf8f.wasm'},{'revision':null,'url':'/1927.bundle.be67b3aafe238ca9f191.js'},{'revision':null,'url':'/1933.bundle.110d30b6901499a2103d.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/1933.css'},{'revision':null,'url':'/2018.bundle.55568a2358323282a1d8.js'},{'revision':null,'url':'/2075.bundle.23265b8e7597c398db4f.js'},{'revision':null,'url':'/2108.bundle.aea8d3b39486dd5ab39e.js'},{'revision':null,'url':'/213.bundle.364a8317839173e8ea12.js'},{'revision':null,'url':'/2424.bundle.ad9d0bbeb7723bf434dd.js'},{'revision':null,'url':'/2516.bundle.f62228e9a800de8d4b31.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/2591.css'},{'revision':null,'url':'/2701.bundle.6873805ddfdccc7a8b1e.js'},{'revision':null,'url':'/2851.bundle.daa0f5f8bca6492d7033.js'},{'revision':null,'url':'/3138.bundle.1b2ed03742a5cf16d22b.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/3138.css'},{'revision':null,'url':'/31fb9346313fc3740d7b.woff2'},{'revision':null,'url':'/3461.bundle.f499a235aa460895003e.js'},{'revision':null,'url':'/3754.bundle.fd4b67c2a29c4bc4a840.js'},{'revision':'e0cfcadcf2c2fbc1f117196b9f62bf3e','url':'/3754.css'},{'revision':null,'url':'/4202.bundle.4fcd0de412907efd5b53.js'},{'revision':null,'url':'/4287.bundle.b7840e7b94cbbc102236.js'},{'revision':null,'url':'/4406.bundle.573d234b4641d23cf8db.js'},{'revision':null,'url':'/4507.bundle.2534b564fe3f0ce90801.js'},{'revision':null,'url':'/4579.bundle.0a6b2f49a7e136a79e37.js'},{'revision':null,'url':'/4819.bundle.11a2ec62c5d49262edf1.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/4819.css'},{'revision':'27c847594562926775c007c401b4fe98','url':'/4972.css'},{'revision':null,'url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/5015.bundle.6dc4e690443e7d5215f6.js'},{'revision':null,'url':'/5028.bundle.723ddddb2203c1c0d2e7.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/5028.css'},{'revision':null,'url':'/5261.bundle.2655560097e9250eac44.js'},{'revision':null,'url':'/5457.bundle.180ec36f95f7dfbdb63c.js'},{'revision':null,'url':'/5485.bundle.2149d00e98cfcecb114b.js'},{'revision':null,'url':'/5491.bundle.4866d2ecb20dd089e071.js'},{'revision':null,'url':'/5802.bundle.26f84db0ff8851532c36.js'},{'revision':'db90dfc1361c5dfac355bf8067ab4371','url':'/5802.css'},{'revision':null,'url':'/5830.bundle.791019deddd536980a11.js'},{'revision':null,'url':'/5858.bundle.466e58128de344ab53f3.js'},{'revision':null,'url':'/6027.bundle.ad09ef0a6ab5ab0100ad.js'},{'revision':null,'url':'/6354.bundle.929febcf6d326e582e00.js'},{'revision':null,'url':'/6376.bundle.738c873196491232acb6.js'},{'revision':null,'url':'/6386.bundle.5d82d1f41d1c37a0358d.js'},{'revision':null,'url':'/6939.bundle.41fbdef87597b5172ec6.js'},{'revision':null,'url':'/7159.bundle.fb9df255868960f69765.js'},{'revision':'20a92cf14c2d8be6cd580f68780cc7fa','url':'/7159.css'},{'revision':null,'url':'/7166.bundle.04b935471132c7d203f2.js'},{'revision':null,'url':'/7190.bundle.3738008038e70525764f.js'},{'revision':null,'url':'/732.bundle.ea6f9d8504e37e01a208.js'},{'revision':null,'url':'/7431.bundle.5e14641f2c71e852abe7.js'},{'revision':null,'url':'/7537.bundle.889ba5f2707418c6fd88.js'},{'revision':null,'url':'/7639.bundle.29a1a0e1df7929296a3e.js'},{'revision':null,'url':'/7758.bundle.c8d106364298e7d288f0.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/7829.css'},{'revision':null,'url':'/8094.bundle.148a66619607e37cbf19.js'},{'revision':null,'url':'/8305.bundle.63b6a800160f4da7c372.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8305.css'},{'revision':null,'url':'/8499.bundle.b9cee1e292a04237794a.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8499.css'},{'revision':null,'url':'/85.bundle.856bfa0f56bba25ff5fb.js'},{'revision':null,'url':'/8558.bundle.685196a726b715d41ff0.js'},{'revision':null,'url':'/8583.bundle.a7afd7affafa244e55e7.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8583.css'},{'revision':null,'url':'/9039.bundle.f72736f47fedeff521e2.js'},{'revision':null,'url':'/9205.bundle.ed7bce8436a7a431955e.js'},{'revision':null,'url':'/9567.bundle.ff782480a4c66e306027.js'},{'revision':null,'url':'/982b0633e475d94949df.wasm'},{'revision':null,'url':'/9845.bundle.8c450e8d65a78a5afcd3.js'},{'revision':null,'url':'/9862.bundle.a5f7925840868fa4ecdb.js'},{'revision':null,'url':'/9927.bundle.e4186f993674729cef10.js'},{'revision':'d41d8cd98f00b204e9800998ecf8427e','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':null,'url':'/a957c5cd315f89b6feb1.wasm'},{'revision':'2f872a596b09e1b1de398d253a78fba2','url':'/app-config.js'},{'revision':'fbc043c8371e8cc579d47c6b9439691b','url':'/app.bundle.css'},{'revision':null,'url':'/app.bundle.f03d71919b8eff3b1f22.js'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/android-chrome-144x144.png'},{'revision':'5cde390de8a619ebe55a669d2ac3effd','url':'/assets/android-chrome-192x192.png'},{'revision':'e7466a67e90471de05401e53b8fe20be','url':'/assets/android-chrome-256x256.png'},{'revision':'9bbe9b80156e930d19a4e1725aa9ddae','url':'/assets/android-chrome-36x36.png'},{'revision':'5698b2ac0c82fe06d84521fc5482df04','url':'/assets/android-chrome-384x384.png'},{'revision':'56bef3fceec344d9747f8abe9c0bba27','url':'/assets/android-chrome-48x48.png'},{'revision':'3e8b8a01290992e82c242557417b0596','url':'/assets/android-chrome-512x512.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/android-chrome-72x72.png'},{'revision':'4c3289bc690f8519012686888e08da71','url':'/assets/android-chrome-96x96.png'},{'revision':'cf464289183184df09292f581df0fb4f','url':'/assets/apple-touch-icon-1024x1024.png'},{'revision':'0857c5282c594e4900e8b31e3bade912','url':'/assets/apple-touch-icon-114x114.png'},{'revision':'4208f41a28130a67e9392a9dfcee6011','url':'/assets/apple-touch-icon-120x120.png'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/apple-touch-icon-144x144.png'},{'revision':'977d293982af7e9064ba20806b45cf35','url':'/assets/apple-touch-icon-152x152.png'},{'revision':'6de91b4d2a30600b410758405cb567b4','url':'/assets/apple-touch-icon-167x167.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-180x180.png'},{'revision':'647386c34e75f1213830ea9a38913525','url':'/assets/apple-touch-icon-57x57.png'},{'revision':'0c200fe83953738b330ea431083e7a86','url':'/assets/apple-touch-icon-60x60.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/apple-touch-icon-72x72.png'},{'revision':'c9989a807bb18633f6dcf254b5b56124','url':'/assets/apple-touch-icon-76x76.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-precomposed.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon.png'},{'revision':'05fa74ea9c1c0c3931ba96467999081d','url':'/assets/apple-touch-startup-image-1182x2208.png'},{'revision':'9e2cd03e1e6fd0520eea6846f4278018','url':'/assets/apple-touch-startup-image-1242x2148.png'},{'revision':'5591e3a1822cbc8439b99c1a40d53425','url':'/assets/apple-touch-startup-image-1496x2048.png'},{'revision':'337de578c5ca04bd7d2be19d24d83821','url':'/assets/apple-touch-startup-image-1536x2008.png'},{'revision':'cafb4ab4eafe6ef946bd229a1d88e7de','url':'/assets/apple-touch-startup-image-320x460.png'},{'revision':'d9bb9e558d729eeac5efb8be8d6111cc','url':'/assets/apple-touch-startup-image-640x1096.png'},{'revision':'038b5b02bac8b82444bf9a87602ac216','url':'/assets/apple-touch-startup-image-640x920.png'},{'revision':'2177076eb07b1d64d663d7c03268be00','url':'/assets/apple-touch-startup-image-748x1024.png'},{'revision':'4fc097443815fe92503584c4bd73c630','url':'/assets/apple-touch-startup-image-750x1294.png'},{'revision':'2e29914062dce5c5141ab47eea2fc5d9','url':'/assets/apple-touch-startup-image-768x1004.png'},{'revision':'f692ec286b3a332c17985f4ed38b1076','url':'/assets/browserconfig.xml'},{'revision':'f3d9a3b647853c45b0e132e4acd0cc4a','url':'/assets/coast-228x228.png'},{'revision':'ad6e1def5c66193d649a31474bbfe45d','url':'/assets/favicon-16x16.png'},{'revision':'84d1dcdb6cdfa55e2f46be0c80fa5698','url':'/assets/favicon-32x32.png'},{'revision':'95fb44c4998a46109e49d724c060db24','url':'/assets/favicon.ico'},{'revision':'5df2a5b0cee399ac0bc40af74ba3c2cb','url':'/assets/firefox_app_128x128.png'},{'revision':'11fd9098c4b07c8a07e1d2a1e309e046','url':'/assets/firefox_app_512x512.png'},{'revision':'27cddfc922dca3bfa27b4a00fc2f5e36','url':'/assets/firefox_app_60x60.png'},{'revision':'2547879ee2928a5fd56dca483bcbd967','url':'/assets/images/CT-AAA.png'},{'revision':'245628fb9d18d6c5cd529615079f8e86','url':'/assets/images/CT-AAA2.png'},{'revision':'997a9c8b57e7b4e46d8f01fb49d078c6','url':'/assets/images/CT-Air.png'},{'revision':'e7ed89711f63348d49898da3a2b73ab9','url':'/assets/images/CT-Bone.png'},{'revision':'09d1dc6efebb10a60cdf85ed74a10214','url':'/assets/images/CT-Bones.png'},{'revision':'f8ae9bafd3b90ba3efbdcbe8901db187','url':'/assets/images/CT-Cardiac.png'},{'revision':'ed0cc538aba90d6a1c029923ca9b47db','url':'/assets/images/CT-Cardiac2.png'},{'revision':'dfdaf4e4889aefbf09514545f45726bb','url':'/assets/images/CT-Cardiac3.png'},{'revision':'5d4b9a331136a1a5d7ce7ccf7dfcca36','url':'/assets/images/CT-Chest-Contrast-Enhanced.png'},{'revision':'5fb264499a5bb42487663b00e42d1513','url':'/assets/images/CT-Chest-Vessels.png'},{'revision':'ab8f0e569c972388ddaaa61b92449fac','url':'/assets/images/CT-Coronary-Arteries-2.png'},{'revision':'e4e7e2e3cc09bc8c4fb03b6441bd2845','url':'/assets/images/CT-Coronary-Arteries-3.png'},{'revision':'79a2962a2d3cbe4bd3b675b5ca83c659','url':'/assets/images/CT-Coronary-Arteries.png'},{'revision':'6502a6bdab1c70e2188c3bf12ce5d4e4','url':'/assets/images/CT-Cropped-Volume-Bone.png'},{'revision':'e28ad3cf5ed2006fc5a7cffd602736fc','url':'/assets/images/CT-Fat.png'},{'revision':'ca1c5be76053edee27e68ffbf9105101','url':'/assets/images/CT-Liver-Vasculature.png'},{'revision':'d6c9ab857ed2ad19f1ff20bea02b6655','url':'/assets/images/CT-Lung.png'},{'revision':'ddb599c6a163bdf28ece8de1a337470a','url':'/assets/images/CT-MIP.png'},{'revision':'0b0dcf7940a555e2a9a0900f7f84d4d3','url':'/assets/images/CT-Muscle.png'},{'revision':'6082d383f9ce375a5873e2a00fc4d372','url':'/assets/images/CT-Pulmonary-Arteries.png'},{'revision':'b317366149ee2607bec95d63eb4d7661','url':'/assets/images/CT-Soft-Tissue.png'},{'revision':'4b0cd5a673ebb71da22a91ed608d6695','url':'/assets/images/DTI-FA-Brain.png'},{'revision':'3ea1cbee022af5b94710b73726308832','url':'/assets/images/MR-Angio.png'},{'revision':'bd25ca7b166193547f34950eed440e5c','url':'/assets/images/MR-Default.png'},{'revision':'2e50a49b859aeb316a1c23f911fce9ad','url':'/assets/images/MR-MIP.png'},{'revision':'6ba74de6961e08652ff9e2f1871b473d','url':'/assets/images/MR-T2-Brain.png'},{'revision':'42406bb474f0f87cf04a5afbbcd5e389','url':'/assets/images/VolumeRendering.png'},{'revision':'2017d95fae79dcf34b5a5b52586d4763','url':'/assets/manifest.webapp'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/mstile-144x144.png'},{'revision':'334895225e16a7777e45d81964725a97','url':'/assets/mstile-150x150.png'},{'revision':'e295cca4af6ed0365cf7b014d91b0e9d','url':'/assets/mstile-310x150.png'},{'revision':'cbefa8c42250e5f2443819fe2c69d91e','url':'/assets/mstile-310x310.png'},{'revision':'aa411a69df2b33a1362fa38d1257fa9d','url':'/assets/mstile-70x70.png'},{'revision':'5609af4f69e40e33471aee770ea1d802','url':'/assets/yandex-browser-50x50.png'},{'revision':'dd001f21b3970d5a7f3e245cc10d21df','url':'/assets/yandex-browser-manifest.json'},{'revision':null,'url':'/c22b37c3488e1d6c3aa4.wasm'},{'revision':null,'url':'/compute.bundle.b7c2ea55f1a69f4a736b.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/dicom-microscopy-viewer/charlswasm_decode.wasm'},{'revision':'9214592a1edd456ad2ef69772201398e','url':'/dicom-microscopy-viewer/dataLoader.worker.min.js'},{'revision':'813dee9adb3a3478dedc6dfe1479e15b','url':'/dicom-microscopy-viewer/dataLoader.worker.min.js.map'},{'revision':'fb088ddc5ec5de63aa6095f70baa2d45','url':'/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js'},{'revision':'cdf943673c34e8dd6be85b026bdffc70','url':'/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js.map'},{'revision':'52b9a07fe0541fe8c313d9788550bf51','url':'/dicom-microscopy-viewer/dicomiccwasm.wasm'},{'revision':'7edb59d2be7c993050cb31ded36afa31','url':'/dicom-microscopy-viewer/libjpegturbowasm_decode.wasm'},{'revision':'54a25d82a224dfd401569baffc8b478d','url':'/dicom-microscopy-viewer/openjpegwasm_decode.wasm'},{'revision':'4acdd19a35d759ec2669f1ba9490937d','url':'/es6-shim.min.js'},{'revision':'92b01d0a387d59841e02cc3a4c994657','url':'/google.js'},{'revision':null,'url':'/histogram-worker.bundle.a2a50c4674d99c619ca7.js'},{'revision':'d2a758bdb50b27b188c4c32eda17ac3b','url':'/index.html'},{'revision':'31c0367ca4160b2c6373e905739c5719','url':'/init-service-worker.js'},{'revision':null,'url':'/interpolation.bundle.2559b710030605fc2bc6.js'},{'revision':'74fc9658b62903be2048c1f82a22b4d4','url':'/manifest.json'},{'revision':'3fa71aa0af3e34b4ebd9a71eee0f4bdd','url':'/ohif-logo-light.svg'},{'revision':'7e81da785c63e75650101db6c5d7560e','url':'/ohif-logo.svg'},{'revision':'eadf8bf1d85032a029e2c0df4b8938b0','url':'/oidc-client.min.js'},{'revision':'242abae066a3d4717e09f218703f1923','url':'/ort/cjs/ort.all.min.js'},{'revision':'039ea411b3b655094035e85bb2e245d4','url':'/ort/cjs/ort.all.min.js.map'},{'revision':'fb509ab752acf788c3cc25459ae72e62','url':'/ort/cjs/ort.min.js'},{'revision':'30087ad61fc31272eb6094962e3a0451','url':'/ort/cjs/ort.min.js.map'},{'revision':'0fad6d8ca65291350ca8a1751659a536','url':'/ort/cjs/ort.training.wasm.min.js'},{'revision':'da692fb2cd7f67223b92a90955b87cb3','url':'/ort/cjs/ort.training.wasm.min.js.map'},{'revision':'f471b605fb03df54c63d5bc77a32226b','url':'/ort/cjs/ort.wasm-core.min.js'},{'revision':'cc4475faebff69233b4fdc1a78eb0399','url':'/ort/cjs/ort.wasm-core.min.js.map'},{'revision':'d228221765171d0a4cf3cb3909dd0be3','url':'/ort/cjs/ort.wasm.min.js'},{'revision':'6d132c02e5eeadf4da54c8bcc0c15200','url':'/ort/cjs/ort.wasm.min.js.map'},{'revision':'9a463e37f9550d7a23f5a47076b6b3d8','url':'/ort/cjs/ort.webgl.min.js'},{'revision':'26e251b6aee08c91a3d6e1af1410659d','url':'/ort/cjs/ort.webgl.min.js.map'},{'revision':'5cd623012201d7c5ddbbdb57224ac26d','url':'/ort/cjs/ort.webgpu.min.js'},{'revision':'e53c54f9663a5d7573b66dd3d25fb93a','url':'/ort/cjs/ort.webgpu.min.js.map'},{'revision':'a6b7eb31b5dcf3835a90ea0d201f21e3','url':'/ort/cjs/package.json'},{'revision':'2ccbe0c4397149108dd0d7ced00b5879','url':'/ort/esm/ort.all.min.js'},{'revision':'2b2ff793ba11a59563a504067aa1e469','url':'/ort/esm/ort.all.min.js.map'},{'revision':'978e978337e66e848c2351da61fd7e8e','url':'/ort/esm/ort.min.js'},{'revision':'add9f88f20194b214c8a97b200c4eac0','url':'/ort/esm/ort.min.js.map'},{'revision':'61471773b94ac06d0d814b49cf619233','url':'/ort/esm/ort.training.wasm.min.js'},{'revision':'60057feb2e9c1d39d7e52b165e450e72','url':'/ort/esm/ort.training.wasm.min.js.map'},{'revision':'12635093e14a67921565de89f678c470','url':'/ort/esm/ort.wasm-core.min.js'},{'revision':'1d2c905465e8b47dc023beaf715bb6ae','url':'/ort/esm/ort.wasm-core.min.js.map'},{'revision':'f2780d73ea108c5728b4c4fb6bd1e8df','url':'/ort/esm/ort.wasm.min.js'},{'revision':'e1af0f0e8befaa973a9192cdc1a882fb','url':'/ort/esm/ort.wasm.min.js.map'},{'revision':'c5a2e8ed939ccfb0211336d8b385d81a','url':'/ort/esm/ort.webgl.min.js'},{'revision':'9e0198bc10517578066aed6c8baef1a3','url':'/ort/esm/ort.webgl.min.js.map'},{'revision':'0c96a22438d8ffdf94f13b1693dbed8b','url':'/ort/esm/ort.webgpu.min.js'},{'revision':'24126f825e1c2dd678b4b85cde6c4e3a','url':'/ort/esm/ort.webgpu.min.js.map'},{'revision':'b305354b5d3207dc798e87449005a1de','url':'/ort/esm/package.json'},{'revision':'10ba4d1a5289405cff7d9b5f453b60b4','url':'/ort/ort-training-wasm-simd.wasm'},{'revision':'f7380fb5928344460bac0e5833ee4a82','url':'/ort/ort-wasm-simd-threaded.jsep.wasm'},{'revision':'068e15f5aba004197782c011a782c500','url':'/ort/ort-wasm-simd-threaded.wasm'},{'revision':'8a468bda81bfb9e375907f0b6da8ffee','url':'/ort/ort-wasm-simd.jsep.wasm'},{'revision':'27a8292511e77fc50ced64326875ca4a','url':'/ort/ort-wasm-simd.wasm'},{'revision':'c9cf2d09cfabe6ea517c87620091a2fb','url':'/ort/ort-wasm-threaded.wasm'},{'revision':'88cb0475e8c4228b29dd201646223f0c','url':'/ort/ort-wasm.wasm'},{'revision':'708def774c211a2b036384d9e14dbfe7','url':'/ort/ort.all.js'},{'revision':'32e292212f5767983e5433f0a88d3425','url':'/ort/ort.all.min.js'},{'revision':'c4a4b66af400491c83591ab732dac868','url':'/ort/ort.all.min.js.map'},{'revision':'5d78ec66bcab8a26756d43b8c63a8f1e','url':'/ort/ort.js'},{'revision':'d552a78742409520bd30fb824a88a266','url':'/ort/ort.min.js'},{'revision':'a1fdb4abef4a6130f72148fe469ca114','url':'/ort/ort.min.js.map'},{'revision':'e3b420cb98f192d8755934dde7c014db','url':'/ort/ort.node.min.js'},{'revision':'9b0c2098e6c9b0f6d6e54e8cb434ed76','url':'/ort/ort.node.min.js.map'},{'revision':'722dabcfbb18772ca80ef96ef9b9a036','url':'/ort/ort.training.wasm.min.js'},{'revision':'de35b3d2e302163bdcb80d3e20c84266','url':'/ort/ort.training.wasm.min.js.map'},{'revision':'f92b62229fc36d346f720b2410e63576','url':'/ort/ort.wasm-core.min.js'},{'revision':'8f56640956155afecadc318d8a32e0f6','url':'/ort/ort.wasm-core.min.js.map'},{'revision':'5ac1ffe964e3bd1f0d2e6a3a18a5a1ba','url':'/ort/ort.wasm.min.js'},{'revision':'9b0a74e48529a07b61428b1a48233b39','url':'/ort/ort.wasm.min.js.map'},{'revision':'4591c9c641ab0151b9a8cdc1ce110286','url':'/ort/ort.webgl.min.js'},{'revision':'77e632e10b98c8d10e17bb3071d5cba4','url':'/ort/ort.webgl.min.js.map'},{'revision':'027aca68552f5081e90a08f7fb064fb7','url':'/ort/ort.webgpu.min.js'},{'revision':'12dc9d5c577bac166f0f74590e4d27dd','url':'/ort/ort.webgpu.min.js.map'},{'revision':null,'url':'/polySeg.bundle.e1f6f05d81ea1352bef3.js'},{'revision':'a1aef5311245f5864315443d12246c37','url':'/polyfill.min.js'},{'revision':'981ac7f7543b8330e3826aff72c33382','url':'/serve.json'},{'revision':'b1e488d9955b62bd2858874df11d5223','url':'/silent-refresh.html'}]);
53
+ workbox.precaching.precacheAndRoute([{'revision':null,'url':'/1459.bundle.4441b0daff1e7d1e475b.js'},{'revision':null,'url':'/1608.bundle.26306ea38618db59eff7.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/1608.css'},{'revision':null,'url':'/17dd54813d5acc10bf8f.wasm'},{'revision':null,'url':'/1927.bundle.be67b3aafe238ca9f191.js'},{'revision':null,'url':'/1933.bundle.5f85010474c1a26d5b2c.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/1933.css'},{'revision':null,'url':'/2018.bundle.e758b183c56ccd7677f4.js'},{'revision':null,'url':'/2075.bundle.23265b8e7597c398db4f.js'},{'revision':null,'url':'/2108.bundle.aea8d3b39486dd5ab39e.js'},{'revision':null,'url':'/213.bundle.090350c45f9d6b691fad.js'},{'revision':null,'url':'/2424.bundle.67e7eb608cce3af35b92.js'},{'revision':null,'url':'/2516.bundle.f62228e9a800de8d4b31.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/2591.css'},{'revision':null,'url':'/2701.bundle.6873805ddfdccc7a8b1e.js'},{'revision':null,'url':'/2851.bundle.d13bb9fdd21d896df73d.js'},{'revision':null,'url':'/3138.bundle.d7f49154c5d6271c9f24.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/3138.css'},{'revision':null,'url':'/31fb9346313fc3740d7b.woff2'},{'revision':null,'url':'/3461.bundle.9f7098f3ea722176acf6.js'},{'revision':null,'url':'/3754.bundle.fd4b67c2a29c4bc4a840.js'},{'revision':'e0cfcadcf2c2fbc1f117196b9f62bf3e','url':'/3754.css'},{'revision':null,'url':'/4202.bundle.4fcd0de412907efd5b53.js'},{'revision':null,'url':'/4287.bundle.b7840e7b94cbbc102236.js'},{'revision':null,'url':'/4406.bundle.573d234b4641d23cf8db.js'},{'revision':null,'url':'/4507.bundle.e964cd8ebfa78f345b34.js'},{'revision':null,'url':'/4579.bundle.0a6b2f49a7e136a79e37.js'},{'revision':null,'url':'/4819.bundle.60695cca9169bb3010f6.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/4819.css'},{'revision':'27c847594562926775c007c401b4fe98','url':'/4972.css'},{'revision':null,'url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/5015.bundle.6470ea8212884be78cbc.js'},{'revision':null,'url':'/5028.bundle.52628ca9cb97df509a06.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/5028.css'},{'revision':null,'url':'/5261.bundle.2655560097e9250eac44.js'},{'revision':null,'url':'/5457.bundle.708c1cd4969fe0167956.js'},{'revision':null,'url':'/5485.bundle.648fe26db2f1f24faace.js'},{'revision':null,'url':'/5491.bundle.4866d2ecb20dd089e071.js'},{'revision':null,'url':'/5802.bundle.26f84db0ff8851532c36.js'},{'revision':'db90dfc1361c5dfac355bf8067ab4371','url':'/5802.css'},{'revision':null,'url':'/5830.bundle.791019deddd536980a11.js'},{'revision':null,'url':'/5858.bundle.466e58128de344ab53f3.js'},{'revision':null,'url':'/6027.bundle.0a9936fc1cf3af4e9841.js'},{'revision':null,'url':'/6354.bundle.929febcf6d326e582e00.js'},{'revision':null,'url':'/6376.bundle.527820a5cb1eece2a8d2.js'},{'revision':null,'url':'/6386.bundle.5d82d1f41d1c37a0358d.js'},{'revision':null,'url':'/6939.bundle.41fbdef87597b5172ec6.js'},{'revision':null,'url':'/7159.bundle.fb9df255868960f69765.js'},{'revision':'20a92cf14c2d8be6cd580f68780cc7fa','url':'/7159.css'},{'revision':null,'url':'/7166.bundle.09a58966db6c16ea7b49.js'},{'revision':null,'url':'/7190.bundle.479332d662ffe08d1f92.js'},{'revision':null,'url':'/732.bundle.ea6f9d8504e37e01a208.js'},{'revision':null,'url':'/7431.bundle.5e14641f2c71e852abe7.js'},{'revision':null,'url':'/7537.bundle.889ba5f2707418c6fd88.js'},{'revision':null,'url':'/7639.bundle.8fd93608aa841bda067b.js'},{'revision':null,'url':'/7758.bundle.c8d106364298e7d288f0.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/7829.css'},{'revision':null,'url':'/8094.bundle.148a66619607e37cbf19.js'},{'revision':null,'url':'/8305.bundle.11c24bdac62073fdf9b5.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8305.css'},{'revision':null,'url':'/8499.bundle.1433b326d312ac8d8b1f.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8499.css'},{'revision':null,'url':'/85.bundle.69ed0f5cd48a2416a0a7.js'},{'revision':null,'url':'/8558.bundle.d9d0faa6b079173a1de5.js'},{'revision':null,'url':'/8583.bundle.2ac4f7476f2b3e026260.js'},{'revision':'27c847594562926775c007c401b4fe98','url':'/8583.css'},{'revision':null,'url':'/9039.bundle.f72736f47fedeff521e2.js'},{'revision':null,'url':'/9205.bundle.ed7bce8436a7a431955e.js'},{'revision':null,'url':'/9567.bundle.ff782480a4c66e306027.js'},{'revision':null,'url':'/982b0633e475d94949df.wasm'},{'revision':null,'url':'/9845.bundle.8c450e8d65a78a5afcd3.js'},{'revision':null,'url':'/9862.bundle.a5f7925840868fa4ecdb.js'},{'revision':null,'url':'/9927.bundle.a112e60a246078248216.js'},{'revision':'d41d8cd98f00b204e9800998ecf8427e','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':null,'url':'/a957c5cd315f89b6feb1.wasm'},{'revision':'2f872a596b09e1b1de398d253a78fba2','url':'/app-config.js'},{'revision':'fbc043c8371e8cc579d47c6b9439691b','url':'/app.bundle.css'},{'revision':null,'url':'/app.bundle.e5ebf5742695ab738d6d.js'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/android-chrome-144x144.png'},{'revision':'5cde390de8a619ebe55a669d2ac3effd','url':'/assets/android-chrome-192x192.png'},{'revision':'e7466a67e90471de05401e53b8fe20be','url':'/assets/android-chrome-256x256.png'},{'revision':'9bbe9b80156e930d19a4e1725aa9ddae','url':'/assets/android-chrome-36x36.png'},{'revision':'5698b2ac0c82fe06d84521fc5482df04','url':'/assets/android-chrome-384x384.png'},{'revision':'56bef3fceec344d9747f8abe9c0bba27','url':'/assets/android-chrome-48x48.png'},{'revision':'3e8b8a01290992e82c242557417b0596','url':'/assets/android-chrome-512x512.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/android-chrome-72x72.png'},{'revision':'4c3289bc690f8519012686888e08da71','url':'/assets/android-chrome-96x96.png'},{'revision':'cf464289183184df09292f581df0fb4f','url':'/assets/apple-touch-icon-1024x1024.png'},{'revision':'0857c5282c594e4900e8b31e3bade912','url':'/assets/apple-touch-icon-114x114.png'},{'revision':'4208f41a28130a67e9392a9dfcee6011','url':'/assets/apple-touch-icon-120x120.png'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/apple-touch-icon-144x144.png'},{'revision':'977d293982af7e9064ba20806b45cf35','url':'/assets/apple-touch-icon-152x152.png'},{'revision':'6de91b4d2a30600b410758405cb567b4','url':'/assets/apple-touch-icon-167x167.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-180x180.png'},{'revision':'647386c34e75f1213830ea9a38913525','url':'/assets/apple-touch-icon-57x57.png'},{'revision':'0c200fe83953738b330ea431083e7a86','url':'/assets/apple-touch-icon-60x60.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/apple-touch-icon-72x72.png'},{'revision':'c9989a807bb18633f6dcf254b5b56124','url':'/assets/apple-touch-icon-76x76.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-precomposed.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon.png'},{'revision':'05fa74ea9c1c0c3931ba96467999081d','url':'/assets/apple-touch-startup-image-1182x2208.png'},{'revision':'9e2cd03e1e6fd0520eea6846f4278018','url':'/assets/apple-touch-startup-image-1242x2148.png'},{'revision':'5591e3a1822cbc8439b99c1a40d53425','url':'/assets/apple-touch-startup-image-1496x2048.png'},{'revision':'337de578c5ca04bd7d2be19d24d83821','url':'/assets/apple-touch-startup-image-1536x2008.png'},{'revision':'cafb4ab4eafe6ef946bd229a1d88e7de','url':'/assets/apple-touch-startup-image-320x460.png'},{'revision':'d9bb9e558d729eeac5efb8be8d6111cc','url':'/assets/apple-touch-startup-image-640x1096.png'},{'revision':'038b5b02bac8b82444bf9a87602ac216','url':'/assets/apple-touch-startup-image-640x920.png'},{'revision':'2177076eb07b1d64d663d7c03268be00','url':'/assets/apple-touch-startup-image-748x1024.png'},{'revision':'4fc097443815fe92503584c4bd73c630','url':'/assets/apple-touch-startup-image-750x1294.png'},{'revision':'2e29914062dce5c5141ab47eea2fc5d9','url':'/assets/apple-touch-startup-image-768x1004.png'},{'revision':'f692ec286b3a332c17985f4ed38b1076','url':'/assets/browserconfig.xml'},{'revision':'f3d9a3b647853c45b0e132e4acd0cc4a','url':'/assets/coast-228x228.png'},{'revision':'ad6e1def5c66193d649a31474bbfe45d','url':'/assets/favicon-16x16.png'},{'revision':'84d1dcdb6cdfa55e2f46be0c80fa5698','url':'/assets/favicon-32x32.png'},{'revision':'95fb44c4998a46109e49d724c060db24','url':'/assets/favicon.ico'},{'revision':'5df2a5b0cee399ac0bc40af74ba3c2cb','url':'/assets/firefox_app_128x128.png'},{'revision':'11fd9098c4b07c8a07e1d2a1e309e046','url':'/assets/firefox_app_512x512.png'},{'revision':'27cddfc922dca3bfa27b4a00fc2f5e36','url':'/assets/firefox_app_60x60.png'},{'revision':'2547879ee2928a5fd56dca483bcbd967','url':'/assets/images/CT-AAA.png'},{'revision':'245628fb9d18d6c5cd529615079f8e86','url':'/assets/images/CT-AAA2.png'},{'revision':'997a9c8b57e7b4e46d8f01fb49d078c6','url':'/assets/images/CT-Air.png'},{'revision':'e7ed89711f63348d49898da3a2b73ab9','url':'/assets/images/CT-Bone.png'},{'revision':'09d1dc6efebb10a60cdf85ed74a10214','url':'/assets/images/CT-Bones.png'},{'revision':'f8ae9bafd3b90ba3efbdcbe8901db187','url':'/assets/images/CT-Cardiac.png'},{'revision':'ed0cc538aba90d6a1c029923ca9b47db','url':'/assets/images/CT-Cardiac2.png'},{'revision':'dfdaf4e4889aefbf09514545f45726bb','url':'/assets/images/CT-Cardiac3.png'},{'revision':'5d4b9a331136a1a5d7ce7ccf7dfcca36','url':'/assets/images/CT-Chest-Contrast-Enhanced.png'},{'revision':'5fb264499a5bb42487663b00e42d1513','url':'/assets/images/CT-Chest-Vessels.png'},{'revision':'ab8f0e569c972388ddaaa61b92449fac','url':'/assets/images/CT-Coronary-Arteries-2.png'},{'revision':'e4e7e2e3cc09bc8c4fb03b6441bd2845','url':'/assets/images/CT-Coronary-Arteries-3.png'},{'revision':'79a2962a2d3cbe4bd3b675b5ca83c659','url':'/assets/images/CT-Coronary-Arteries.png'},{'revision':'6502a6bdab1c70e2188c3bf12ce5d4e4','url':'/assets/images/CT-Cropped-Volume-Bone.png'},{'revision':'e28ad3cf5ed2006fc5a7cffd602736fc','url':'/assets/images/CT-Fat.png'},{'revision':'ca1c5be76053edee27e68ffbf9105101','url':'/assets/images/CT-Liver-Vasculature.png'},{'revision':'d6c9ab857ed2ad19f1ff20bea02b6655','url':'/assets/images/CT-Lung.png'},{'revision':'ddb599c6a163bdf28ece8de1a337470a','url':'/assets/images/CT-MIP.png'},{'revision':'0b0dcf7940a555e2a9a0900f7f84d4d3','url':'/assets/images/CT-Muscle.png'},{'revision':'6082d383f9ce375a5873e2a00fc4d372','url':'/assets/images/CT-Pulmonary-Arteries.png'},{'revision':'b317366149ee2607bec95d63eb4d7661','url':'/assets/images/CT-Soft-Tissue.png'},{'revision':'4b0cd5a673ebb71da22a91ed608d6695','url':'/assets/images/DTI-FA-Brain.png'},{'revision':'3ea1cbee022af5b94710b73726308832','url':'/assets/images/MR-Angio.png'},{'revision':'bd25ca7b166193547f34950eed440e5c','url':'/assets/images/MR-Default.png'},{'revision':'2e50a49b859aeb316a1c23f911fce9ad','url':'/assets/images/MR-MIP.png'},{'revision':'6ba74de6961e08652ff9e2f1871b473d','url':'/assets/images/MR-T2-Brain.png'},{'revision':'42406bb474f0f87cf04a5afbbcd5e389','url':'/assets/images/VolumeRendering.png'},{'revision':'2017d95fae79dcf34b5a5b52586d4763','url':'/assets/manifest.webapp'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/mstile-144x144.png'},{'revision':'334895225e16a7777e45d81964725a97','url':'/assets/mstile-150x150.png'},{'revision':'e295cca4af6ed0365cf7b014d91b0e9d','url':'/assets/mstile-310x150.png'},{'revision':'cbefa8c42250e5f2443819fe2c69d91e','url':'/assets/mstile-310x310.png'},{'revision':'aa411a69df2b33a1362fa38d1257fa9d','url':'/assets/mstile-70x70.png'},{'revision':'5609af4f69e40e33471aee770ea1d802','url':'/assets/yandex-browser-50x50.png'},{'revision':'dd001f21b3970d5a7f3e245cc10d21df','url':'/assets/yandex-browser-manifest.json'},{'revision':null,'url':'/c22b37c3488e1d6c3aa4.wasm'},{'revision':null,'url':'/compute.bundle.b7c2ea55f1a69f4a736b.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/dicom-microscopy-viewer/charlswasm_decode.wasm'},{'revision':'9214592a1edd456ad2ef69772201398e','url':'/dicom-microscopy-viewer/dataLoader.worker.min.js'},{'revision':'813dee9adb3a3478dedc6dfe1479e15b','url':'/dicom-microscopy-viewer/dataLoader.worker.min.js.map'},{'revision':'fb088ddc5ec5de63aa6095f70baa2d45','url':'/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js'},{'revision':'cdf943673c34e8dd6be85b026bdffc70','url':'/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js.map'},{'revision':'52b9a07fe0541fe8c313d9788550bf51','url':'/dicom-microscopy-viewer/dicomiccwasm.wasm'},{'revision':'7edb59d2be7c993050cb31ded36afa31','url':'/dicom-microscopy-viewer/libjpegturbowasm_decode.wasm'},{'revision':'54a25d82a224dfd401569baffc8b478d','url':'/dicom-microscopy-viewer/openjpegwasm_decode.wasm'},{'revision':'4acdd19a35d759ec2669f1ba9490937d','url':'/es6-shim.min.js'},{'revision':'92b01d0a387d59841e02cc3a4c994657','url':'/google.js'},{'revision':null,'url':'/histogram-worker.bundle.a2a50c4674d99c619ca7.js'},{'revision':'785f67e29f9cf279ccda2cb494fc904d','url':'/index.html'},{'revision':'31c0367ca4160b2c6373e905739c5719','url':'/init-service-worker.js'},{'revision':null,'url':'/interpolation.bundle.829844ff3f72f5645f29.js'},{'revision':'74fc9658b62903be2048c1f82a22b4d4','url':'/manifest.json'},{'revision':'3fa71aa0af3e34b4ebd9a71eee0f4bdd','url':'/ohif-logo-light.svg'},{'revision':'7e81da785c63e75650101db6c5d7560e','url':'/ohif-logo.svg'},{'revision':'eadf8bf1d85032a029e2c0df4b8938b0','url':'/oidc-client.min.js'},{'revision':'242abae066a3d4717e09f218703f1923','url':'/ort/cjs/ort.all.min.js'},{'revision':'039ea411b3b655094035e85bb2e245d4','url':'/ort/cjs/ort.all.min.js.map'},{'revision':'fb509ab752acf788c3cc25459ae72e62','url':'/ort/cjs/ort.min.js'},{'revision':'30087ad61fc31272eb6094962e3a0451','url':'/ort/cjs/ort.min.js.map'},{'revision':'0fad6d8ca65291350ca8a1751659a536','url':'/ort/cjs/ort.training.wasm.min.js'},{'revision':'da692fb2cd7f67223b92a90955b87cb3','url':'/ort/cjs/ort.training.wasm.min.js.map'},{'revision':'f471b605fb03df54c63d5bc77a32226b','url':'/ort/cjs/ort.wasm-core.min.js'},{'revision':'cc4475faebff69233b4fdc1a78eb0399','url':'/ort/cjs/ort.wasm-core.min.js.map'},{'revision':'d228221765171d0a4cf3cb3909dd0be3','url':'/ort/cjs/ort.wasm.min.js'},{'revision':'6d132c02e5eeadf4da54c8bcc0c15200','url':'/ort/cjs/ort.wasm.min.js.map'},{'revision':'9a463e37f9550d7a23f5a47076b6b3d8','url':'/ort/cjs/ort.webgl.min.js'},{'revision':'26e251b6aee08c91a3d6e1af1410659d','url':'/ort/cjs/ort.webgl.min.js.map'},{'revision':'5cd623012201d7c5ddbbdb57224ac26d','url':'/ort/cjs/ort.webgpu.min.js'},{'revision':'e53c54f9663a5d7573b66dd3d25fb93a','url':'/ort/cjs/ort.webgpu.min.js.map'},{'revision':'a6b7eb31b5dcf3835a90ea0d201f21e3','url':'/ort/cjs/package.json'},{'revision':'2ccbe0c4397149108dd0d7ced00b5879','url':'/ort/esm/ort.all.min.js'},{'revision':'2b2ff793ba11a59563a504067aa1e469','url':'/ort/esm/ort.all.min.js.map'},{'revision':'978e978337e66e848c2351da61fd7e8e','url':'/ort/esm/ort.min.js'},{'revision':'add9f88f20194b214c8a97b200c4eac0','url':'/ort/esm/ort.min.js.map'},{'revision':'61471773b94ac06d0d814b49cf619233','url':'/ort/esm/ort.training.wasm.min.js'},{'revision':'60057feb2e9c1d39d7e52b165e450e72','url':'/ort/esm/ort.training.wasm.min.js.map'},{'revision':'12635093e14a67921565de89f678c470','url':'/ort/esm/ort.wasm-core.min.js'},{'revision':'1d2c905465e8b47dc023beaf715bb6ae','url':'/ort/esm/ort.wasm-core.min.js.map'},{'revision':'f2780d73ea108c5728b4c4fb6bd1e8df','url':'/ort/esm/ort.wasm.min.js'},{'revision':'e1af0f0e8befaa973a9192cdc1a882fb','url':'/ort/esm/ort.wasm.min.js.map'},{'revision':'c5a2e8ed939ccfb0211336d8b385d81a','url':'/ort/esm/ort.webgl.min.js'},{'revision':'9e0198bc10517578066aed6c8baef1a3','url':'/ort/esm/ort.webgl.min.js.map'},{'revision':'0c96a22438d8ffdf94f13b1693dbed8b','url':'/ort/esm/ort.webgpu.min.js'},{'revision':'24126f825e1c2dd678b4b85cde6c4e3a','url':'/ort/esm/ort.webgpu.min.js.map'},{'revision':'b305354b5d3207dc798e87449005a1de','url':'/ort/esm/package.json'},{'revision':'10ba4d1a5289405cff7d9b5f453b60b4','url':'/ort/ort-training-wasm-simd.wasm'},{'revision':'f7380fb5928344460bac0e5833ee4a82','url':'/ort/ort-wasm-simd-threaded.jsep.wasm'},{'revision':'068e15f5aba004197782c011a782c500','url':'/ort/ort-wasm-simd-threaded.wasm'},{'revision':'8a468bda81bfb9e375907f0b6da8ffee','url':'/ort/ort-wasm-simd.jsep.wasm'},{'revision':'27a8292511e77fc50ced64326875ca4a','url':'/ort/ort-wasm-simd.wasm'},{'revision':'c9cf2d09cfabe6ea517c87620091a2fb','url':'/ort/ort-wasm-threaded.wasm'},{'revision':'88cb0475e8c4228b29dd201646223f0c','url':'/ort/ort-wasm.wasm'},{'revision':'708def774c211a2b036384d9e14dbfe7','url':'/ort/ort.all.js'},{'revision':'32e292212f5767983e5433f0a88d3425','url':'/ort/ort.all.min.js'},{'revision':'c4a4b66af400491c83591ab732dac868','url':'/ort/ort.all.min.js.map'},{'revision':'5d78ec66bcab8a26756d43b8c63a8f1e','url':'/ort/ort.js'},{'revision':'d552a78742409520bd30fb824a88a266','url':'/ort/ort.min.js'},{'revision':'a1fdb4abef4a6130f72148fe469ca114','url':'/ort/ort.min.js.map'},{'revision':'e3b420cb98f192d8755934dde7c014db','url':'/ort/ort.node.min.js'},{'revision':'9b0c2098e6c9b0f6d6e54e8cb434ed76','url':'/ort/ort.node.min.js.map'},{'revision':'722dabcfbb18772ca80ef96ef9b9a036','url':'/ort/ort.training.wasm.min.js'},{'revision':'de35b3d2e302163bdcb80d3e20c84266','url':'/ort/ort.training.wasm.min.js.map'},{'revision':'f92b62229fc36d346f720b2410e63576','url':'/ort/ort.wasm-core.min.js'},{'revision':'8f56640956155afecadc318d8a32e0f6','url':'/ort/ort.wasm-core.min.js.map'},{'revision':'5ac1ffe964e3bd1f0d2e6a3a18a5a1ba','url':'/ort/ort.wasm.min.js'},{'revision':'9b0a74e48529a07b61428b1a48233b39','url':'/ort/ort.wasm.min.js.map'},{'revision':'4591c9c641ab0151b9a8cdc1ce110286','url':'/ort/ort.webgl.min.js'},{'revision':'77e632e10b98c8d10e17bb3071d5cba4','url':'/ort/ort.webgl.min.js.map'},{'revision':'027aca68552f5081e90a08f7fb064fb7','url':'/ort/ort.webgpu.min.js'},{'revision':'12dc9d5c577bac166f0f74590e4d27dd','url':'/ort/ort.webgpu.min.js.map'},{'revision':null,'url':'/polySeg.bundle.e1f6f05d81ea1352bef3.js'},{'revision':'a1aef5311245f5864315443d12246c37','url':'/polyfill.min.js'},{'revision':'981ac7f7543b8330e3826aff72c33382','url':'/serve.json'},{'revision':'b1e488d9955b62bd2858874df11d5223','url':'/silent-refresh.html'}]);
54
54
 
55
55
  // TODO: Cache API
56
56
  // https://developers.google.com/web/fundamentals/instant-and-offline/web-storage/cache-api
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohif/app",
3
- "version": "3.13.0-beta.67",
3
+ "version": "3.13.0-beta.69",
4
4
  "productVersion": "3.4.0",
5
5
  "description": "OHIF Viewer",
6
6
  "author": "OHIF Contributors",
@@ -56,25 +56,25 @@
56
56
  "@cornerstonejs/codec-openjph": "2.4.7",
57
57
  "@cornerstonejs/dicom-image-loader": "4.22.3",
58
58
  "@emotion/serialize": "1.3.3",
59
- "@ohif/core": "3.13.0-beta.67",
60
- "@ohif/extension-cornerstone": "3.13.0-beta.67",
61
- "@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.67",
62
- "@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.67",
63
- "@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.67",
64
- "@ohif/extension-default": "3.13.0-beta.67",
65
- "@ohif/extension-dicom-microscopy": "3.13.0-beta.67",
66
- "@ohif/extension-dicom-pdf": "3.13.0-beta.67",
67
- "@ohif/extension-dicom-video": "3.13.0-beta.67",
68
- "@ohif/extension-test": "3.13.0-beta.67",
69
- "@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.67",
70
- "@ohif/i18n": "3.13.0-beta.67",
71
- "@ohif/mode-basic-dev-mode": "3.13.0-beta.67",
72
- "@ohif/mode-longitudinal": "3.13.0-beta.67",
73
- "@ohif/mode-microscopy": "3.13.0-beta.67",
74
- "@ohif/mode-test": "3.13.0-beta.67",
75
- "@ohif/mode-ultrasound-pleura-bline": "3.13.0-beta.67",
76
- "@ohif/ui": "3.13.0-beta.67",
77
- "@ohif/ui-next": "3.13.0-beta.67",
59
+ "@ohif/core": "3.13.0-beta.69",
60
+ "@ohif/extension-cornerstone": "3.13.0-beta.69",
61
+ "@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.69",
62
+ "@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.69",
63
+ "@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.69",
64
+ "@ohif/extension-default": "3.13.0-beta.69",
65
+ "@ohif/extension-dicom-microscopy": "3.13.0-beta.69",
66
+ "@ohif/extension-dicom-pdf": "3.13.0-beta.69",
67
+ "@ohif/extension-dicom-video": "3.13.0-beta.69",
68
+ "@ohif/extension-test": "3.13.0-beta.69",
69
+ "@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.69",
70
+ "@ohif/i18n": "3.13.0-beta.69",
71
+ "@ohif/mode-basic-dev-mode": "3.13.0-beta.69",
72
+ "@ohif/mode-longitudinal": "3.13.0-beta.69",
73
+ "@ohif/mode-microscopy": "3.13.0-beta.69",
74
+ "@ohif/mode-test": "3.13.0-beta.69",
75
+ "@ohif/mode-ultrasound-pleura-bline": "3.13.0-beta.69",
76
+ "@ohif/ui": "3.13.0-beta.69",
77
+ "@ohif/ui-next": "3.13.0-beta.69",
78
78
  "@svgr/webpack": "8.1.0",
79
79
  "@types/react": "18.3.23",
80
80
  "classnames": "2.5.1",