@ohif/app 3.8.0 → 3.8.2

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 (46) hide show
  1. package/dist/{117.bundle.77cc4e62d0de5d843e2e.js → 117.bundle.17ae130d2bb21ef9d31f.js} +75 -80
  2. package/dist/{121.bundle.47f05840a5b3cdf75543.js → 121.bundle.27d181784f24551bc546.js} +2 -1
  3. package/dist/{164.bundle.b101cb64d04a22453984.js → 164.bundle.e30009bee13acb6967da.js} +554 -311
  4. package/dist/{236.bundle.f774cdc955890e6cdac9.js → 236.bundle.79a374f5fdf7fde431f4.js} +753 -140
  5. package/dist/{188.bundle.f2b81ec70ae344f57183.js → 243.bundle.7891b41d969264043783.js} +8 -8
  6. package/dist/{325.bundle.5012b0285b6baadd1884.js → 325.bundle.bfb7de5a397beae16d24.js} +11 -11
  7. package/dist/{342.bundle.36ee082163b01284eeba.js → 342.bundle.17f0c50a27c0ba1f3846.js} +7 -0
  8. package/dist/{203.bundle.3581da3a32a0b720d3a7.js → 370.bundle.e4cd6c20d3496c949374.js} +614 -455
  9. package/dist/{448.bundle.35b8f8e262fa954026df.js → 448.bundle.375bbf6d00a23e35f229.js} +2 -2
  10. package/dist/{483.bundle.581b242d7b90866fdfb9.js → 483.bundle.016de3c3ec209d9fa42a.js} +16 -3
  11. package/dist/{487.bundle.79aff4db7df5f383b423.js → 487.bundle.205821cf073b4d0d2e71.js} +2 -2
  12. package/dist/{416.bundle.9b0d7559344fd02c9e08.js → 501.bundle.de519580f8ba42802378.js} +1206 -305
  13. package/dist/{530.bundle.207b38c15c4c01e4db0e.js → 530.bundle.17b9a34fefff133e5379.js} +3 -3
  14. package/dist/{544.bundle.3542927ec15c3f688c8d.js → 544.bundle.170c67e76a6900a9a644.js} +4 -4
  15. package/dist/{206.bundle.e1ea316389b21006d3df.js → 545.bundle.c9cc3bd30adc9904cf64.js} +28 -24
  16. package/dist/{321.bundle.39a76114e54cd9833c43.js → 550.bundle.53604ec87839bd9b4a49.js} +82 -49
  17. package/dist/{574.bundle.4b059c95cd34efdc9cb3.js → 574.bundle.b369b11b04c3e080f0b3.js} +40 -37
  18. package/dist/{41.bundle.64e0da470e235cfac4bb.js → 682.bundle.fdd752d2920107f695fb.js} +26 -6
  19. package/dist/{699.bundle.b9666b1d4ddf7e8577ee.js → 699.bundle.fee3d1c6609ecc557a9a.js} +32 -3
  20. package/dist/{669.bundle.64309c677c5ca188348c.js → 721.bundle.d01a6829ac9b0abef67d.js} +73 -73
  21. package/dist/{722.bundle.52eb61926d08a08793fe.js → 722.bundle.1242e0348afc63ca4f5e.js} +10 -4
  22. package/dist/{724.bundle.72aef9dfca69ae057d37.js → 776.bundle.bb8a64b917ff1e559734.js} +13 -15
  23. package/dist/{862.bundle.9897a9b748078d53f9ab.js → 862.bundle.59bb164ca7e871a33e44.js} +1 -1
  24. package/dist/{889.bundle.b6231f995fd098f7e3f9.js → 889.bundle.5b10c495e1442d648ffc.js} +8 -8
  25. package/dist/{905.bundle.cd3e2b347340dd47a1b0.js → 905.bundle.1ba21a0406473fc92696.js} +2 -2
  26. package/dist/{907.bundle.723a425dedf8147243d2.js → 907.bundle.b199f25916a94c4ebb97.js} +2 -2
  27. package/dist/{473.bundle.11f707c8170ade2eb56a.js → 914.bundle.2b3a856b7d41ac8298e6.js} +510 -272
  28. package/dist/{94.bundle.33ca3bc10aa42716dbbb.js → 94.bundle.ae3ca435b134c95aea2e.js} +38 -8
  29. package/dist/{961.bundle.2c4663737c970764a41e.js → 961.bundle.d1b25d8f354bde3be17c.js} +2 -2
  30. package/dist/{7.bundle.94692aed50fe4ba2e2f5.js → 981.bundle.808058a6555d322675e1.js} +15 -15
  31. package/dist/{594.bundle.c292423defd9581bfbe3.js → 989.bundle.b929ddc23c16980560de.js} +5 -5
  32. package/dist/{633.bundle.e258ba4843985e67336a.js → 998.bundle.df083f740270855652bd.js} +21 -20
  33. package/dist/app-config.js +5 -1
  34. package/dist/{app.bundle.a05edb830ad2ecd67aac.js → app.bundle.7fa3782f7fa236cc53a8.js} +791 -568
  35. package/dist/app.bundle.css +1 -1
  36. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  37. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  38. package/dist/google.js +1 -0
  39. package/dist/index.html +1 -1
  40. package/dist/{polySeg.bundle.4442dd3318266fddf4d0.js → polySeg.bundle.36ddebc98d8b109edf33.js} +3 -3
  41. package/dist/{suv-peak-worker.bundle.348c016f7f973d05f2d2.js → suv-peak-worker.bundle.f4df597fab47d977d7f3.js} +3 -3
  42. package/dist/sw.js +1 -1
  43. package/package.json +18 -18
  44. /package/dist/{321.css → 550.css} +0 -0
  45. /package/dist/{783.bundle.11d774eb13ffc74cdca5.js → 783.bundle.f4f09b94ebe4d1a466b1.js} +0 -0
  46. /package/dist/{633.css → 998.css} +0 -0
@@ -103,8 +103,8 @@ Compose.propTypes = {
103
103
  var ui_src = __webpack_require__(5085);
104
104
  // EXTERNAL MODULE: ./state/index.js + 1 modules
105
105
  var state = __webpack_require__(15575);
106
- // EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
107
- var core_src = __webpack_require__(55411);
106
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
107
+ var core_src = __webpack_require__(8633);
108
108
  // EXTERNAL MODULE: ../node_modules/react-router/dist/index.js
109
109
  var react_router_dist = __webpack_require__(10971);
110
110
  // EXTERNAL MODULE: ./hooks/useSearchParams.ts
@@ -1004,8 +1004,8 @@ function WorkList({
1004
1004
  };
1005
1005
  });
1006
1006
  const hasStudies = numOfStudies > 0;
1007
- const versionNumber = "3.8.0";
1008
- const commitHash = "1dcdc9dabe9d4179f223912d6adc00bc95629a85";
1007
+ const versionNumber = "3.8.2\n";
1008
+ const commitHash = "339299113c65b5ce4032b02b5b4043a8968107ed";
1009
1009
  const menuOptions = [{
1010
1010
  title: t('Header:About'),
1011
1011
  icon: 'info',
@@ -1132,7 +1132,7 @@ WorkList.propTypes = {
1132
1132
  getConfig: (prop_types_default()).func
1133
1133
  }).isRequired,
1134
1134
  isLoadingData: (prop_types_default()).bool.isRequired,
1135
- servicesManager: prop_types_default().instanceOf(core_src/* ServicesManager */.CS)
1135
+ servicesManager: (prop_types_default()).object.isRequired
1136
1136
  };
1137
1137
  const defaultFilterValues = {
1138
1138
  patientName: '',
@@ -1864,7 +1864,7 @@ function ViewerViewportGrid(props) {
1864
1864
  }
1865
1865
  ViewerViewportGrid.propTypes = {
1866
1866
  viewportComponents: (prop_types_default()).array.isRequired,
1867
- servicesManager: prop_types_default().instanceOf(core_src/* ServicesManager */.CS)
1867
+ servicesManager: prop_types_default().instanceOf(Object).isRequired
1868
1868
  };
1869
1869
  ViewerViewportGrid.defaultProps = {
1870
1870
  viewportComponents: []
@@ -1924,27 +1924,27 @@ modes.push("@ohif/mode-preclinical-4d");
1924
1924
  async function loadModule(module) {
1925
1925
  if (typeof module !== 'string') return module;
1926
1926
  if (module === "@ohif/extension-default") {
1927
- const imported = await Promise.all(/* import() */[__webpack_require__.e(203), __webpack_require__.e(473), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(644), __webpack_require__.e(931), __webpack_require__.e(206), __webpack_require__.e(481)]).then(__webpack_require__.bind(__webpack_require__, 7206));
1927
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(370), __webpack_require__.e(914), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(644), __webpack_require__.e(931), __webpack_require__.e(545), __webpack_require__.e(481)]).then(__webpack_require__.bind(__webpack_require__, 42545));
1928
1928
  return imported.default;
1929
1929
  }
1930
1930
  if (module === "@ohif/extension-cornerstone") {
1931
- const imported = await Promise.all(/* import() */[__webpack_require__.e(203), __webpack_require__.e(473), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(644), __webpack_require__.e(722), __webpack_require__.e(445), __webpack_require__.e(321)]).then(__webpack_require__.bind(__webpack_require__, 12702));
1931
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(370), __webpack_require__.e(914), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(644), __webpack_require__.e(722), __webpack_require__.e(445), __webpack_require__.e(550)]).then(__webpack_require__.bind(__webpack_require__, 550));
1932
1932
  return imported.default;
1933
1933
  }
1934
1934
  if (module === "@ohif/extension-measurement-tracking") {
1935
- const imported = await Promise.all(/* import() */[__webpack_require__.e(203), __webpack_require__.e(473), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(644), __webpack_require__.e(342), __webpack_require__.e(931), __webpack_require__.e(835), __webpack_require__.e(206), __webpack_require__.e(669), __webpack_require__.e(325)]).then(__webpack_require__.bind(__webpack_require__, 84284));
1935
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(370), __webpack_require__.e(914), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(644), __webpack_require__.e(342), __webpack_require__.e(931), __webpack_require__.e(835), __webpack_require__.e(545), __webpack_require__.e(721), __webpack_require__.e(325)]).then(__webpack_require__.bind(__webpack_require__, 84284));
1936
1936
  return imported.default;
1937
1937
  }
1938
1938
  if (module === "@ohif/extension-cornerstone-dicom-sr") {
1939
- const imported = await Promise.all(/* import() */[__webpack_require__.e(203), __webpack_require__.e(473), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(342), __webpack_require__.e(669)]).then(__webpack_require__.bind(__webpack_require__, 61669));
1939
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(370), __webpack_require__.e(914), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(342), __webpack_require__.e(721)]).then(__webpack_require__.bind(__webpack_require__, 14721));
1940
1940
  return imported.default;
1941
1941
  }
1942
1942
  if (module === "@ohif/extension-cornerstone-dicom-seg") {
1943
- const imported = await Promise.all(/* import() */[__webpack_require__.e(203), __webpack_require__.e(473), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(644), __webpack_require__.e(342), __webpack_require__.e(931), __webpack_require__.e(726), __webpack_require__.e(206), __webpack_require__.e(633)]).then(__webpack_require__.bind(__webpack_require__, 27400));
1943
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(370), __webpack_require__.e(914), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(644), __webpack_require__.e(342), __webpack_require__.e(931), __webpack_require__.e(726), __webpack_require__.e(545), __webpack_require__.e(998)]).then(__webpack_require__.bind(__webpack_require__, 32009));
1944
1944
  return imported.default;
1945
1945
  }
1946
1946
  if (module === "@ohif/extension-cornerstone-dynamic-volume") {
1947
- const imported = await Promise.all(/* import() */[__webpack_require__.e(203), __webpack_require__.e(473), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(722), __webpack_require__.e(487)]).then(__webpack_require__.bind(__webpack_require__, 26487));
1947
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(370), __webpack_require__.e(914), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(722), __webpack_require__.e(487)]).then(__webpack_require__.bind(__webpack_require__, 26487));
1948
1948
  return imported.default;
1949
1949
  }
1950
1950
  if (module === "@ohif/extension-dicom-microscopy") {
@@ -1960,7 +1960,7 @@ async function loadModule(module) {
1960
1960
  return imported.default;
1961
1961
  }
1962
1962
  if (module === "@ohif/extension-tmtv") {
1963
- const imported = await Promise.all(/* import() */[__webpack_require__.e(203), __webpack_require__.e(473), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(342), __webpack_require__.e(7)]).then(__webpack_require__.bind(__webpack_require__, 89007));
1963
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(370), __webpack_require__.e(914), __webpack_require__.e(483), __webpack_require__.e(236), __webpack_require__.e(342), __webpack_require__.e(981)]).then(__webpack_require__.bind(__webpack_require__, 93981));
1964
1964
  return imported.default;
1965
1965
  }
1966
1966
  if (module === "@ohif/extension-test") {
@@ -1968,11 +1968,11 @@ async function loadModule(module) {
1968
1968
  return imported.default;
1969
1969
  }
1970
1970
  if (module === "@ohif/extension-cornerstone-dicom-rt") {
1971
- const imported = await __webpack_require__.e(/* import() */ 188).then(__webpack_require__.bind(__webpack_require__, 99188));
1971
+ const imported = await __webpack_require__.e(/* import() */ 243).then(__webpack_require__.bind(__webpack_require__, 5243));
1972
1972
  return imported.default;
1973
1973
  }
1974
1974
  if (module === "@ohif/mode-longitudinal") {
1975
- const imported = await __webpack_require__.e(/* import() */ 41).then(__webpack_require__.bind(__webpack_require__, 97041));
1975
+ const imported = await __webpack_require__.e(/* import() */ 682).then(__webpack_require__.bind(__webpack_require__, 82682));
1976
1976
  return imported.default;
1977
1977
  }
1978
1978
  if (module === "@ohif/mode-segmentation") {
@@ -1980,7 +1980,7 @@ async function loadModule(module) {
1980
1980
  return imported.default;
1981
1981
  }
1982
1982
  if (module === "@ohif/mode-tmtv") {
1983
- const imported = await __webpack_require__.e(/* import() */ 724).then(__webpack_require__.bind(__webpack_require__, 28724));
1983
+ const imported = await __webpack_require__.e(/* import() */ 776).then(__webpack_require__.bind(__webpack_require__, 40776));
1984
1984
  return imported.default;
1985
1985
  }
1986
1986
  if (module === "@ohif/mode-microscopy") {
@@ -1996,7 +1996,7 @@ async function loadModule(module) {
1996
1996
  return imported.default;
1997
1997
  }
1998
1998
  if (module === "@ohif/mode-basic-dev-mode") {
1999
- const imported = await __webpack_require__.e(/* import() */ 594).then(__webpack_require__.bind(__webpack_require__, 26594));
1999
+ const imported = await __webpack_require__.e(/* import() */ 989).then(__webpack_require__.bind(__webpack_require__, 50989));
2000
2000
  return imported.default;
2001
2001
  }
2002
2002
  return (await import( /* webpackIgnore: true */module)).default;
@@ -6616,7 +6616,7 @@ const detectionOptions = {
6616
6616
  }
6617
6617
  });
6618
6618
  ;// CONCATENATED MODULE: ../../i18n/package.json
6619
- const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.8.0-beta.93"}');
6619
+ const package_namespaceObject = {"rE":"3.8.1"};
6620
6620
  ;// CONCATENATED MODULE: ../../i18n/src/utils.js
6621
6621
  const languagesMap = {
6622
6622
  ar: 'Arabic',
@@ -19271,8 +19271,8 @@ ViewportDialogProvider.propTypes = {
19271
19271
  // EXTERNAL MODULE: ../../../node_modules/lodash.merge/index.js
19272
19272
  var lodash_merge = __webpack_require__(40592);
19273
19273
  var lodash_merge_default = /*#__PURE__*/__webpack_require__.n(lodash_merge);
19274
- // EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
19275
- var src = __webpack_require__(55411);
19274
+ // EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
19275
+ var src = __webpack_require__(8633);
19276
19276
  ;// CONCATENATED MODULE: ../../ui/src/utils/viewportLabels.ts
19277
19277
  const viewportLabels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
19278
19278
  /* harmony default export */ const utils_viewportLabels = (viewportLabels);
@@ -19710,7 +19710,8 @@ const toolboxReducer = (state, action) => {
19710
19710
  if (!state[toolbarSectionId]) {
19711
19711
  state[toolbarSectionId] = {
19712
19712
  activeTool: null,
19713
- toolOptions: {}
19713
+ toolOptions: {},
19714
+ selectedEvent: false
19714
19715
  };
19715
19716
  }
19716
19717
  switch (action.type) {
@@ -19719,7 +19720,8 @@ const toolboxReducer = (state, action) => {
19719
19720
  ...state,
19720
19721
  [toolbarSectionId]: {
19721
19722
  ...state[toolbarSectionId],
19722
- activeTool: action.payload.activeTool
19723
+ activeTool: action.payload.activeTool,
19724
+ selectedEvent: true
19723
19725
  }
19724
19726
  };
19725
19727
  case 'UPDATE_TOOL_OPTION':
@@ -19732,6 +19734,7 @@ const toolboxReducer = (state, action) => {
19732
19734
  ...state,
19733
19735
  [toolbarSectionId]: {
19734
19736
  ...state[toolbarSectionId],
19737
+ selectedEvent: false,
19735
19738
  toolOptions: {
19736
19739
  ...state[toolbarSectionId].toolOptions,
19737
19740
  [toolName]: state[toolbarSectionId].toolOptions[toolName].map(option => option.id === optionName ? {
@@ -19745,6 +19748,7 @@ const toolboxReducer = (state, action) => {
19745
19748
  // Initialize tool options for each toolbarSectionId
19746
19749
  return {
19747
19750
  ...state,
19751
+ selectedEvent: false,
19748
19752
  [action.toolbarSectionId]: {
19749
19753
  ...state[action.toolbarSectionId],
19750
19754
  toolOptions: action.payload
@@ -31715,6 +31719,14 @@ const Select_Select = ({
31715
31719
  components: _components,
31716
31720
  placeholder: placeholder,
31717
31721
  options: options,
31722
+ blurInputOnSelect: true,
31723
+ menuPortalTarget: document.body,
31724
+ styles: {
31725
+ menuPortal: base => ({
31726
+ ...base,
31727
+ zIndex: 9999
31728
+ })
31729
+ },
31718
31730
  value: value && Array.isArray(value) ? selectedOptions : value,
31719
31731
  onChange: (selectedOptions, {
31720
31732
  action
@@ -32886,7 +32898,6 @@ const MeasurementTable = ({
32886
32898
  onDelete,
32887
32899
  servicesManager
32888
32900
  }) => {
32889
- servicesManager = servicesManager;
32890
32901
  const {
32891
32902
  customizationService,
32892
32903
  measurementService
@@ -59742,7 +59753,6 @@ SwiperSlide.displayName = 'SwiperSlide';
59742
59753
 
59743
59754
 
59744
59755
 
59745
-
59746
59756
  const LegacySidePanel_borderSize = 4;
59747
59757
  const expandedWidth = 248;
59748
59758
  const LegacySidePanel_collapsedWidth = 25;
@@ -59935,7 +59945,7 @@ LegacySidePanel_LegacySidePanel.defaultProps = {
59935
59945
  defaultComponentOpen: null
59936
59946
  };
59937
59947
  LegacySidePanel_LegacySidePanel.propTypes = {
59938
- servicesManager: prop_types_default().instanceOf(src/* ServicesManager */.CS),
59948
+ servicesManager: (prop_types_default()).object.isRequired,
59939
59949
  side: prop_types_default().oneOf(['left', 'right']).isRequired,
59940
59950
  className: (prop_types_default()).string,
59941
59951
  activeTabIndex: (prop_types_default()).number,
@@ -62609,20 +62619,26 @@ function ToolboxUI(props) {
62609
62619
  const {
62610
62620
  toolbarButtons,
62611
62621
  handleToolSelect,
62612
- activeToolOptions,
62622
+ toolboxState,
62613
62623
  numRows,
62614
62624
  servicesManager,
62615
62625
  title,
62616
62626
  useCollapsedPanel = true
62617
62627
  } = props;
62628
+ const {
62629
+ activeTool,
62630
+ toolOptions,
62631
+ selectedEvent
62632
+ } = toolboxState;
62633
+ const activeToolOptions = toolOptions?.[activeTool];
62618
62634
  const prevToolOptions = usePrevious(activeToolOptions);
62619
62635
  (0,react.useEffect)(() => {
62620
- if (!activeToolOptions) {
62636
+ if (!activeToolOptions || Array.isArray(activeToolOptions) === false) {
62621
62637
  return;
62622
62638
  }
62623
62639
  activeToolOptions.forEach((option, index) => {
62624
62640
  const prevOption = prevToolOptions ? prevToolOptions[index] : undefined;
62625
- if (!prevOption || option.value !== prevOption.value) {
62641
+ if (!prevOption || option.value !== prevOption.value || selectedEvent) {
62626
62642
  const isOptionValid = option.condition ? option.condition({
62627
62643
  options: activeToolOptions
62628
62644
  }) : true;
@@ -62634,7 +62650,7 @@ function ToolboxUI(props) {
62634
62650
  }
62635
62651
  }
62636
62652
  });
62637
- }, [activeToolOptions]);
62653
+ }, [activeToolOptions, selectedEvent]);
62638
62654
  const render = () => {
62639
62655
  return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
62640
62656
  className: "flex flex-col bg-black"
@@ -62724,8 +62740,8 @@ function Toolbox({
62724
62740
  servicesManager,
62725
62741
  buttonSection: buttonSectionId
62726
62742
  });
62727
- const prevButtonIdsRef = (0,react.useRef)();
62728
- const prevToolboxStateRef = (0,react.useRef)();
62743
+ const prevButtonIdsRef = (0,react.useRef)('');
62744
+ const prevToolboxStateRef = (0,react.useRef)('');
62729
62745
  (0,react.useEffect)(() => {
62730
62746
  const currentButtonIdsStr = JSON.stringify(toolbarButtons.map(button => {
62731
62747
  const {
@@ -62820,7 +62836,7 @@ function Toolbox({
62820
62836
  return accumulator;
62821
62837
  }, {});
62822
62838
  api.initializeToolOptions(initializeOptionsWithEnhancements);
62823
- }, [toolbarButtons, api, toolboxState]);
62839
+ }, [toolbarButtons, api, toolboxState, commandsManager, servicesManager]);
62824
62840
  const handleToolOptionChange = (toolName, optionName, newValue) => {
62825
62841
  api.handleToolOptionChange(toolName, optionName, newValue);
62826
62842
  };
@@ -62832,7 +62848,7 @@ function Toolbox({
62832
62848
  return /*#__PURE__*/react.createElement(ToolboxUI, Toolbox_extends({}, props, {
62833
62849
  title: title,
62834
62850
  toolbarButtons: toolbarButtons,
62835
- activeToolOptions: toolboxState.toolOptions?.[toolboxState.activeTool],
62851
+ toolboxState: toolboxState,
62836
62852
  handleToolSelect: id => api.handleToolSelect(id),
62837
62853
  handleToolOptionChange: handleToolOptionChange,
62838
62854
  onInteraction: onInteraction
@@ -63325,7 +63341,7 @@ function _getImageOrientationPatient(image) {
63325
63341
 
63326
63342
  /***/ }),
63327
63343
 
63328
- /***/ 55411:
63344
+ /***/ 8633:
63329
63345
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63330
63346
 
63331
63347
  "use strict";
@@ -63353,10 +63369,10 @@ __webpack_require__.d(__webpack_exports__, {
63353
63369
  CS: () => (/* reexport */ ServicesManager),
63354
63370
  wb: () => (/* reexport */ services_StateSyncService),
63355
63371
  ToolbarService: () => (/* reexport */ ToolBarService),
63356
- u$: () => (/* reexport */ UIDialogService),
63372
+ u$: () => (/* reexport */ services_UIDialogService),
63357
63373
  zo: () => (/* reexport */ services_UIModalService),
63358
63374
  v4: () => (/* reexport */ services_UINotificationService),
63359
- A$: () => (/* reexport */ UIViewportDialogService),
63375
+ A$: () => (/* reexport */ services_UIViewportDialogService),
63360
63376
  pS: () => (/* reexport */ services_UserAuthenticationService),
63361
63377
  sI: () => (/* reexport */ services_ViewportGridService),
63362
63378
  Ai: () => (/* reexport */ services_WorkflowStepsService),
@@ -64171,142 +64187,89 @@ class ServiceProvidersManager {
64171
64187
  this.providers[serviceName] = provider;
64172
64188
  }
64173
64189
  }
64174
- ;// CONCATENATED MODULE: ../../core/src/services/UIDialogService/index.js
64175
- /**
64176
- * A UI Element Position
64177
- *
64178
- * @typedef {Object} ElementPosition
64179
- * @property {number} top -
64180
- * @property {number} left -
64181
- * @property {number} right -
64182
- * @property {number} bottom -
64183
- */
64184
-
64185
- /**
64186
- * UI Dialog
64187
- *
64188
- * @typedef {Object} DialogProps
64189
- * @property {string} id The dialog id.
64190
- * @property {ReactElement|HTMLElement} content The dialog content.
64191
- * @property {Object} contentProps The dialog content props.
64192
- * @property {boolean} [isDraggable=true] Controls if dialog content is draggable or not.
64193
- * @property {boolean} [showOverlay=false] Controls dialog overlay.
64194
- * @property {boolean} [centralize=false] Center the dialog on the screen.
64195
- * @property {boolean} [preservePosition=true] Use last position instead of default.
64196
- * @property {ElementPosition} defaultPosition Specifies the `x` and `y` that the dragged item should start at.
64197
- * @property {Function} onStart Called when dragging starts. If `false` is returned any handler, the action will cancel.
64198
- * @property {Function} onStop Called when dragging stops.
64199
- * @property {Function} onDrag Called while dragging.
64200
- */
64201
-
64202
- const UIDialogService_name = 'uiDialogService';
64203
- const publicAPI = {
64204
- name: UIDialogService_name,
64205
- dismiss: _dismiss,
64206
- dismissAll: _dismissAll,
64207
- create: _create,
64208
- setServiceImplementation
64209
- };
64210
- const serviceImplementation = {
64211
- _dismiss: () => console.warn('dismiss() NOT IMPLEMENTED'),
64212
- _dismissAll: () => console.warn('dismissAll() NOT IMPLEMENTED'),
64213
- _create: () => console.warn('create() NOT IMPLEMENTED')
64214
- };
64190
+ ;// CONCATENATED MODULE: ../../core/src/services/UIDialogService/UIDialogService.ts
64191
+ var _UIDialogService;
64215
64192
 
64216
- /**
64217
- * Show a new UI dialog;
64218
- *
64219
- * @param {DialogProps} props { id, content, contentProps, onStart, onDrag, onStop, centralize, isDraggable, showOverlay, preservePosition, defaultPosition }
64220
- */
64221
- function _create({
64222
- id,
64223
- content,
64224
- contentProps,
64225
- onStart,
64226
- onDrag,
64227
- onStop,
64228
- centralize = false,
64229
- preservePosition = true,
64230
- isDraggable = true,
64231
- showOverlay = false,
64232
- onClickOutside,
64233
- defaultPosition
64234
- }) {
64235
- return serviceImplementation._create({
64193
+ class UIDialogService extends pubSubServiceInterface/* PubSubService */.R {
64194
+ constructor() {
64195
+ super(UIDialogService.EVENTS);
64196
+ this.serviceImplementation = {
64197
+ _dismiss: () => console.warn('dismiss() NOT IMPLEMENTED'),
64198
+ _dismissAll: () => console.warn('dismissAll() NOT IMPLEMENTED'),
64199
+ _create: () => console.warn('create() NOT IMPLEMENTED')
64200
+ };
64201
+ this.serviceImplementation = {
64202
+ ...this.serviceImplementation
64203
+ };
64204
+ }
64205
+ create({
64236
64206
  id,
64237
64207
  content,
64238
64208
  contentProps,
64239
64209
  onStart,
64240
64210
  onDrag,
64241
64211
  onStop,
64242
- centralize,
64243
- preservePosition,
64244
- isDraggable,
64245
- onClickOutside,
64246
- showOverlay,
64212
+ centralize = false,
64213
+ preservePosition = true,
64214
+ isDraggable = true,
64215
+ showOverlay = false,
64247
64216
  defaultPosition
64248
- });
64249
- }
64250
-
64251
- /**
64252
- * Destroys all dialogs, if any
64253
- *
64254
- * @returns void
64255
- */
64256
- function _dismissAll() {
64257
- return serviceImplementation._dismissAll();
64258
- }
64259
-
64260
- /**
64261
- * Destroy the dialog, if currently created
64262
- *
64263
- * @returns void
64264
- */
64265
- function _dismiss({
64266
- id
64267
- }) {
64268
- return serviceImplementation._dismiss({
64217
+ }) {
64218
+ return this.serviceImplementation._create({
64219
+ id,
64220
+ content,
64221
+ contentProps,
64222
+ onStart,
64223
+ onDrag,
64224
+ onStop,
64225
+ centralize,
64226
+ preservePosition,
64227
+ isDraggable,
64228
+ showOverlay,
64229
+ defaultPosition
64230
+ });
64231
+ }
64232
+ dismiss({
64269
64233
  id
64270
- });
64271
- }
64272
-
64273
- /**
64274
- *
64275
- *
64276
- * @param {*} {
64277
- * dismiss: dismissImplementation,
64278
- * dismissAll: dismissAllImplementation,
64279
- * create: createImplementation,
64280
- * }
64281
- */
64282
- function setServiceImplementation({
64283
- dismiss: dismissImplementation,
64284
- dismissAll: dismissAllImplementation,
64285
- create: createImplementation
64286
- }) {
64287
- if (dismissImplementation) {
64288
- serviceImplementation._dismiss = dismissImplementation;
64234
+ }) {
64235
+ return this.serviceImplementation._dismiss({
64236
+ id
64237
+ });
64289
64238
  }
64290
- if (dismissAllImplementation) {
64291
- serviceImplementation._dismissAll = dismissAllImplementation;
64239
+ dismissAll() {
64240
+ return this.serviceImplementation._dismissAll();
64292
64241
  }
64293
- if (createImplementation) {
64294
- serviceImplementation._create = createImplementation;
64242
+ setServiceImplementation({
64243
+ dismiss: dismissImplementation,
64244
+ dismissAll: dismissAllImplementation,
64245
+ create: createImplementation
64246
+ }) {
64247
+ if (dismissImplementation) {
64248
+ this.serviceImplementation._dismiss = dismissImplementation;
64249
+ }
64250
+ if (dismissAllImplementation) {
64251
+ this.serviceImplementation._dismissAll = dismissAllImplementation;
64252
+ }
64253
+ if (createImplementation) {
64254
+ this.serviceImplementation._create = createImplementation;
64255
+ }
64295
64256
  }
64296
64257
  }
64297
-
64298
- // TODO - export type here
64299
- /* harmony default export */ const UIDialogService = ({
64300
- REGISTRATION: {
64301
- name: UIDialogService_name,
64302
- altName: 'UIDialogService',
64303
- create: ({
64304
- configuration = {}
64305
- }) => {
64306
- return publicAPI;
64307
- }
64258
+ _UIDialogService = UIDialogService;
64259
+ UIDialogService.EVENTS = {};
64260
+ UIDialogService.REGISTRATION = {
64261
+ name: 'uiDialogService',
64262
+ altName: 'UIDialogService',
64263
+ create: ({
64264
+ configuration = {}
64265
+ }) => {
64266
+ return new _UIDialogService();
64308
64267
  }
64309
- });
64268
+ };
64269
+ /* harmony default export */ const UIDialogService_UIDialogService = (UIDialogService);
64270
+ ;// CONCATENATED MODULE: ../../core/src/services/UIDialogService/index.ts
64271
+
64272
+ /* harmony default export */ const services_UIDialogService = (UIDialogService_UIDialogService);
64310
64273
  ;// CONCATENATED MODULE: ../../core/src/services/UIModalService/index.ts
64311
64274
  var _UIModalService;
64312
64275
  /**
@@ -64323,7 +64286,7 @@ var _UIModalService;
64323
64286
  */
64324
64287
 
64325
64288
  const UIModalService_name = 'uiModalService';
64326
- const UIModalService_serviceImplementation = {
64289
+ const serviceImplementation = {
64327
64290
  _hide: () => console.warn('hide() NOT IMPLEMENTED'),
64328
64291
  _show: () => console.warn('show() NOT IMPLEMENTED')
64329
64292
  };
@@ -64348,7 +64311,7 @@ class UIModalService {
64348
64311
  containerDimensions = null,
64349
64312
  contentDimensions = null
64350
64313
  }) {
64351
- return UIModalService_serviceImplementation._show({
64314
+ return serviceImplementation._show({
64352
64315
  content,
64353
64316
  contentProps,
64354
64317
  shouldCloseOnEsc,
@@ -64368,7 +64331,7 @@ class UIModalService {
64368
64331
  * @returns void
64369
64332
  */
64370
64333
  hide() {
64371
- return UIModalService_serviceImplementation._hide();
64334
+ return serviceImplementation._hide();
64372
64335
  }
64373
64336
 
64374
64337
  /**
@@ -64384,10 +64347,10 @@ class UIModalService {
64384
64347
  show: showImplementation
64385
64348
  }) {
64386
64349
  if (hideImplementation) {
64387
- UIModalService_serviceImplementation._hide = hideImplementation;
64350
+ serviceImplementation._hide = hideImplementation;
64388
64351
  }
64389
64352
  if (showImplementation) {
64390
- UIModalService_serviceImplementation._show = showImplementation;
64353
+ serviceImplementation._show = showImplementation;
64391
64354
  }
64392
64355
  }
64393
64356
  }
@@ -64493,44 +64456,21 @@ UINotificationService.REGISTRATION = {
64493
64456
  }
64494
64457
  };
64495
64458
  /* harmony default export */ const services_UINotificationService = (UINotificationService);
64496
- ;// CONCATENATED MODULE: ../../core/src/services/UIViewportDialogService/index.js
64497
- /**
64498
- * Viewport Dialog
64499
- *
64500
- * @typedef {Object} ViewportDialogProps
64501
- * @property {ReactElement|HTMLElement} [content=null] Modal content.
64502
- * @property {Object} [contentProps=null] Modal content props.
64503
- * @property {boolean} [viewportId=false] Modal is dismissible via the esc key.
64504
- */
64459
+ ;// CONCATENATED MODULE: ../../core/src/services/UIViewportDialogService/UIViewportDialogService.ts
64460
+ var _UIViewportDialogService;
64505
64461
 
64506
- const UIViewportDialogService_name = 'uiViewportDialogService';
64507
- const UIViewportDialogService_publicAPI = {
64508
- name: UIViewportDialogService_name,
64509
- hide: _hide,
64510
- show: _show,
64511
- setServiceImplementation: UIViewportDialogService_setServiceImplementation
64512
- };
64513
- const UIViewportDialogService_serviceImplementation = {
64514
- _hide: () => console.warn('hide() NOT IMPLEMENTED'),
64515
- _show: () => console.warn('show() NOT IMPLEMENTED')
64516
- };
64517
-
64518
- /**
64519
- * Show a new UI viewport dialog on the specified viewportId;
64520
- *
64521
- * @param {ViewportDialogProps} props { content, contentProps, viewportId }
64522
- */
64523
- function _show({
64524
- viewportId,
64525
- id,
64526
- type,
64527
- message,
64528
- actions,
64529
- onSubmit,
64530
- onOutsideClick,
64531
- onKeyPress
64532
- }) {
64533
- return UIViewportDialogService_serviceImplementation._show({
64462
+ class UIViewportDialogService extends pubSubServiceInterface/* PubSubService */.R {
64463
+ constructor() {
64464
+ super(UIViewportDialogService.EVENTS);
64465
+ this.serviceImplementation = {
64466
+ _hide: () => console.warn('hide() NOT IMPLEMENTED'),
64467
+ _show: () => console.warn('show() NOT IMPLEMENTED')
64468
+ };
64469
+ this.serviceImplementation = {
64470
+ ...this.serviceImplementation
64471
+ };
64472
+ }
64473
+ show({
64534
64474
  viewportId,
64535
64475
  id,
64536
64476
  type,
@@ -64539,47 +64479,48 @@ function _show({
64539
64479
  onSubmit,
64540
64480
  onOutsideClick,
64541
64481
  onKeyPress
64542
- });
64543
- }
64544
-
64545
- /**
64546
- * Hides/dismisses the viewport dialog, if currently shown
64547
- */
64548
- function _hide() {
64549
- return UIViewportDialogService_serviceImplementation._hide();
64550
- }
64551
-
64552
- /**
64553
- *
64554
- *
64555
- * @param {*} {
64556
- * hide: hideImplementation,
64557
- * show: showImplementation,
64558
- * viewportId,
64559
- * }
64560
- */
64561
- function UIViewportDialogService_setServiceImplementation({
64562
- hide: hideImplementation,
64563
- show: showImplementation
64564
- }) {
64565
- if (hideImplementation) {
64566
- UIViewportDialogService_serviceImplementation._hide = hideImplementation;
64482
+ }) {
64483
+ return this.serviceImplementation._show({
64484
+ viewportId,
64485
+ id,
64486
+ type,
64487
+ message,
64488
+ actions,
64489
+ onSubmit,
64490
+ onOutsideClick,
64491
+ onKeyPress
64492
+ });
64567
64493
  }
64568
- if (showImplementation) {
64569
- UIViewportDialogService_serviceImplementation._show = showImplementation;
64494
+ hide() {
64495
+ return this.serviceImplementation._hide();
64570
64496
  }
64571
- }
64572
- /* harmony default export */ const UIViewportDialogService = ({
64573
- REGISTRATION: {
64574
- name: UIViewportDialogService_name,
64575
- altName: 'UIViewportDialogService',
64576
- create: ({
64577
- configuration = {}
64578
- }) => {
64579
- return UIViewportDialogService_publicAPI;
64497
+ setServiceImplementation({
64498
+ hide: hideImplementation,
64499
+ show: showImplementation
64500
+ }) {
64501
+ if (hideImplementation) {
64502
+ this.serviceImplementation._hide = hideImplementation;
64503
+ }
64504
+ if (showImplementation) {
64505
+ this.serviceImplementation._show = showImplementation;
64580
64506
  }
64581
64507
  }
64582
- });
64508
+ }
64509
+ _UIViewportDialogService = UIViewportDialogService;
64510
+ UIViewportDialogService.EVENTS = {};
64511
+ UIViewportDialogService.REGISTRATION = {
64512
+ name: 'uiViewportDialogService',
64513
+ altName: 'UIViewportDialogService',
64514
+ create: ({
64515
+ configuration = {}
64516
+ }) => {
64517
+ return new _UIViewportDialogService();
64518
+ }
64519
+ };
64520
+ /* harmony default export */ const UIViewportDialogService_UIViewportDialogService = (UIViewportDialogService);
64521
+ ;// CONCATENATED MODULE: ../../core/src/services/UIViewportDialogService/index.ts
64522
+
64523
+ /* harmony default export */ const services_UIViewportDialogService = (UIViewportDialogService_UIViewportDialogService);
64583
64524
  // EXTERNAL MODULE: ../../core/src/services/DicomMetadataStore/DicomMetadataStore.ts + 2 modules
64584
64525
  var DicomMetadataStore = __webpack_require__(23221);
64585
64526
  ;// CONCATENATED MODULE: ../../core/src/services/DicomMetadataStore/index.ts
@@ -67637,6 +67578,8 @@ class HangingProtocolService extends pubSubServiceInterface/* PubSubService */.R
67637
67578
  if (this.registeredImageLoadStrategies[imageLoadStrategy] instanceof Function) {
67638
67579
  this.activeImageLoadStrategyName = imageLoadStrategy;
67639
67580
  }
67581
+ } else {
67582
+ this.activeImageLoadStrategyName = null;
67640
67583
  }
67641
67584
  this._updateStageStatus(options);
67642
67585
  }
@@ -68228,96 +68171,94 @@ HangingProtocolService.REGISTRATION = {
68228
68171
  ;// CONCATENATED MODULE: ../../core/src/services/HangingProtocolService/index.ts
68229
68172
 
68230
68173
  /* harmony default export */ const services_HangingProtocolService = (HangingProtocolService);
68231
- ;// CONCATENATED MODULE: ../../core/src/services/UserAuthenticationService/UserAuthenticationService.js
68232
- const UserAuthenticationService_name = 'userAuthenticationService';
68233
- const UserAuthenticationService_publicAPI = {
68234
- name: UserAuthenticationService_name,
68235
- getState: _getState,
68236
- setUser: _setUser,
68237
- getUser: _getUser,
68238
- getAuthorizationHeader: _getAuthorizationHeader,
68239
- handleUnauthenticated: _handleUnauthenticated,
68240
- setServiceImplementation: UserAuthenticationService_setServiceImplementation,
68241
- reset: _reset,
68242
- set: _set
68243
- };
68244
- const UserAuthenticationService_serviceImplementation = {
68245
- _getState: () => console.warn('getState() NOT IMPLEMENTED'),
68246
- _setUser: () => console.warn('_setUser() NOT IMPLEMENTED'),
68247
- _getUser: () => console.warn('_setUser() NOT IMPLEMENTED'),
68248
- _getAuthorizationHeader: () => {},
68249
- // TODO: have enabled/disabled state?
68250
- //console.warn('_getAuthorizationHeader() NOT IMPLEMENTED'),
68251
- _handleUnauthenticated: () => console.warn('_handleUnauthenticated() NOT IMPLEMENTED'),
68252
- _reset: () => console.warn('reset() NOT IMPLEMENTED'),
68253
- _set: () => console.warn('set() NOT IMPLEMENTED')
68254
- };
68255
- function _getState() {
68256
- return UserAuthenticationService_serviceImplementation._getState();
68257
- }
68258
- function _setUser(user) {
68259
- return UserAuthenticationService_serviceImplementation._setUser(user);
68260
- }
68261
- function _getUser() {
68262
- return UserAuthenticationService_serviceImplementation._getUser();
68263
- }
68264
- function _getAuthorizationHeader() {
68265
- return UserAuthenticationService_serviceImplementation._getAuthorizationHeader();
68266
- }
68267
- function _handleUnauthenticated() {
68268
- return UserAuthenticationService_serviceImplementation._handleUnauthenticated();
68269
- }
68270
- function _set(state) {
68271
- return UserAuthenticationService_serviceImplementation._set(state);
68272
- }
68273
- function _reset() {
68274
- return UserAuthenticationService_serviceImplementation._reset({});
68275
- }
68276
- function UserAuthenticationService_setServiceImplementation({
68277
- getState: getStateImplementation,
68278
- setUser: setUserImplementation,
68279
- getUser: getUserImplementation,
68280
- getAuthorizationHeader: getAuthorizationHeaderImplementation,
68281
- handleUnauthenticated: handleUnauthenticatedImplementation,
68282
- reset: resetImplementation,
68283
- set: setImplementation
68284
- }) {
68285
- if (getStateImplementation) {
68286
- UserAuthenticationService_serviceImplementation._getState = getStateImplementation;
68174
+ ;// CONCATENATED MODULE: ../../core/src/services/UserAuthenticationService/UserAuthenticationService.ts
68175
+ var _UserAuthenticationService;
68176
+
68177
+ class UserAuthenticationService extends pubSubServiceInterface/* PubSubService */.R {
68178
+ constructor() {
68179
+ super(UserAuthenticationService.EVENTS);
68180
+ this.serviceImplementation = {
68181
+ _getState: () => console.warn('getState() NOT IMPLEMENTED'),
68182
+ _setUser: () => console.warn('_setUser() NOT IMPLEMENTED'),
68183
+ _getUser: () => console.warn('_getUser() NOT IMPLEMENTED'),
68184
+ _getAuthorizationHeader: () => {},
68185
+ // TODO: Implement this method
68186
+ _handleUnauthenticated: () => console.warn('_handleUnauthenticated() NOT IMPLEMENTED'),
68187
+ _reset: () => console.warn('reset() NOT IMPLEMENTED'),
68188
+ _set: () => console.warn('set() NOT IMPLEMENTED')
68189
+ };
68190
+ this.serviceImplementation = {
68191
+ ...this.serviceImplementation
68192
+ };
68287
68193
  }
68288
- if (setUserImplementation) {
68289
- UserAuthenticationService_serviceImplementation._setUser = setUserImplementation;
68194
+ getState() {
68195
+ return this.serviceImplementation._getState();
68290
68196
  }
68291
- if (getUserImplementation) {
68292
- UserAuthenticationService_serviceImplementation._getUser = getUserImplementation;
68197
+ setUser(user) {
68198
+ return this.serviceImplementation._setUser(user);
68293
68199
  }
68294
- if (getAuthorizationHeaderImplementation) {
68295
- UserAuthenticationService_serviceImplementation._getAuthorizationHeader = getAuthorizationHeaderImplementation;
68200
+ getUser() {
68201
+ return this.serviceImplementation._getUser();
68296
68202
  }
68297
- if (handleUnauthenticatedImplementation) {
68298
- UserAuthenticationService_serviceImplementation._handleUnauthenticated = handleUnauthenticatedImplementation;
68203
+ getAuthorizationHeader() {
68204
+ return this.serviceImplementation._getAuthorizationHeader();
68299
68205
  }
68300
- if (resetImplementation) {
68301
- UserAuthenticationService_serviceImplementation._reset = resetImplementation;
68206
+ handleUnauthenticated() {
68207
+ return this.serviceImplementation._handleUnauthenticated();
68302
68208
  }
68303
- if (setImplementation) {
68304
- UserAuthenticationService_serviceImplementation._set = setImplementation;
68209
+ reset() {
68210
+ return this.serviceImplementation._reset();
68305
68211
  }
68306
- }
68307
- /* harmony default export */ const UserAuthenticationService = ({
68308
- REGISTRATION: {
68309
- name: UserAuthenticationService_name,
68310
- altName: 'UserAuthenticationService',
68311
- create: ({
68312
- configuration = {}
68313
- }) => {
68314
- return UserAuthenticationService_publicAPI;
68212
+ set(state) {
68213
+ return this.serviceImplementation._set(state);
68214
+ }
68215
+ setServiceImplementation({
68216
+ getState: getStateImplementation,
68217
+ setUser: setUserImplementation,
68218
+ getUser: getUserImplementation,
68219
+ getAuthorizationHeader: getAuthorizationHeaderImplementation,
68220
+ handleUnauthenticated: handleUnauthenticatedImplementation,
68221
+ reset: resetImplementation,
68222
+ set: setImplementation
68223
+ }) {
68224
+ if (getStateImplementation) {
68225
+ this.serviceImplementation._getState = getStateImplementation;
68226
+ }
68227
+ if (setUserImplementation) {
68228
+ this.serviceImplementation._setUser = setUserImplementation;
68229
+ }
68230
+ if (getUserImplementation) {
68231
+ this.serviceImplementation._getUser = getUserImplementation;
68232
+ }
68233
+ if (getAuthorizationHeaderImplementation) {
68234
+ this.serviceImplementation._getAuthorizationHeader = getAuthorizationHeaderImplementation;
68235
+ }
68236
+ if (handleUnauthenticatedImplementation) {
68237
+ this.serviceImplementation._handleUnauthenticated = handleUnauthenticatedImplementation;
68238
+ }
68239
+ if (resetImplementation) {
68240
+ this.serviceImplementation._reset = resetImplementation;
68241
+ }
68242
+ if (setImplementation) {
68243
+ this.serviceImplementation._set = setImplementation;
68315
68244
  }
68316
68245
  }
68317
- });
68318
- ;// CONCATENATED MODULE: ../../core/src/services/UserAuthenticationService/index.js
68246
+ }
68247
+ _UserAuthenticationService = UserAuthenticationService;
68248
+ UserAuthenticationService.EVENTS = {};
68249
+ UserAuthenticationService.REGISTRATION = {
68250
+ name: 'userAuthenticationService',
68251
+ altName: 'UserAuthenticationService',
68252
+ create: ({
68253
+ configuration = {}
68254
+ }) => {
68255
+ return new _UserAuthenticationService();
68256
+ }
68257
+ };
68258
+ /* harmony default export */ const UserAuthenticationService_UserAuthenticationService = (UserAuthenticationService);
68259
+ ;// CONCATENATED MODULE: ../../core/src/services/UserAuthenticationService/index.ts
68319
68260
 
68320
- /* harmony default export */ const services_UserAuthenticationService = (UserAuthenticationService);
68261
+ /* harmony default export */ const services_UserAuthenticationService = (UserAuthenticationService_UserAuthenticationService);
68321
68262
  // EXTERNAL MODULE: ../../../node_modules/lodash.merge/index.js
68322
68263
  var lodash_merge = __webpack_require__(40592);
68323
68264
  var lodash_merge_default = /*#__PURE__*/__webpack_require__.n(lodash_merge);
@@ -71593,10 +71534,10 @@ const OHIF = {
71593
71534
  CineService: services_CineService,
71594
71535
  CustomizationService: services_CustomizationService,
71595
71536
  StateSyncService: services_StateSyncService,
71596
- UIDialogService: UIDialogService,
71537
+ UIDialogService: services_UIDialogService,
71597
71538
  UIModalService: services_UIModalService,
71598
71539
  UINotificationService: services_UINotificationService,
71599
- UIViewportDialogService: UIViewportDialogService,
71540
+ UIViewportDialogService: services_UIViewportDialogService,
71600
71541
  DisplaySetService: services_DisplaySetService,
71601
71542
  MeasurementService: services_MeasurementService,
71602
71543
  ToolbarService: ToolBarService,
@@ -72675,7 +72616,7 @@ webpackContext.id = 64692;
72675
72616
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44753);
72676
72617
  /* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13320);
72677
72618
  /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(88903);
72678
- /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(50002);
72619
+ /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(98362);
72679
72620
  /* harmony import */ var _enums_ViewportType__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(21432);
72680
72621
  /* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(51884);
72681
72622
  /* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(71702);
@@ -72922,13 +72863,15 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
72922
72863
  static get useCustomRenderingPipeline() {
72923
72864
  return false;
72924
72865
  }
72925
- applyViewOrientation(orientation) {
72866
+ applyViewOrientation(orientation, resetCamera = true) {
72926
72867
  const { viewPlaneNormal, viewUp } = this._getOrientationVectors(orientation);
72927
72868
  const camera = this.getVtkActiveCamera();
72928
72869
  camera.setDirectionOfProjection(-viewPlaneNormal[0], -viewPlaneNormal[1], -viewPlaneNormal[2]);
72929
72870
  camera.setViewUpFrom(viewUp);
72930
72871
  this.initialViewUp = viewUp;
72931
- this.resetCamera();
72872
+ if (resetCamera) {
72873
+ this.resetCamera();
72874
+ }
72932
72875
  }
72933
72876
  initializeVolumeNewImageEventDispatcher() {
72934
72877
  const volumeNewImageHandlerBound = volumeNewImageHandler.bind(this);
@@ -73157,28 +73100,96 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
73157
73100
  }
73158
73101
  getViewReference(viewRefSpecifier = {}) {
73159
73102
  const target = super.getViewReference(viewRefSpecifier);
73103
+ const volumeId = this.getVolumeId(viewRefSpecifier);
73160
73104
  if (viewRefSpecifier?.forFrameOfReference !== false) {
73161
- target.volumeId = this.getVolumeId(viewRefSpecifier);
73162
- }
73163
- return {
73164
- ...target,
73165
- sliceIndex: this.getCurrentImageIdIndex(),
73166
- };
73105
+ target.volumeId = volumeId;
73106
+ }
73107
+ if (typeof viewRefSpecifier?.sliceIndex !== 'number') {
73108
+ return target;
73109
+ }
73110
+ const { viewPlaneNormal } = target;
73111
+ const delta = viewRefSpecifier.sliceIndex - this.getSliceIndex();
73112
+ const { sliceRangeInfo } = (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.getVolumeViewportScrollInfo)(this, volumeId, true);
73113
+ const { sliceRange, spacingInNormalDirection, camera } = sliceRangeInfo;
73114
+ const { focalPoint, position } = camera;
73115
+ const { newFocalPoint } = (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.snapFocalPointToSlice)(focalPoint, position, sliceRange, viewPlaneNormal, spacingInNormalDirection, delta);
73116
+ target.cameraFocalPoint = newFocalPoint;
73117
+ return target;
73167
73118
  }
73168
73119
  isReferenceViewable(viewRef, options) {
73120
+ if (!viewRef.FrameOfReferenceUID) {
73121
+ return false;
73122
+ }
73169
73123
  if (!super.isReferenceViewable(viewRef, options)) {
73170
73124
  return false;
73171
73125
  }
73172
73126
  if (options?.withNavigation) {
73173
73127
  return true;
73174
73128
  }
73175
- const currentSliceIndex = this.getCurrentImageIdIndex();
73129
+ const currentSliceIndex = this.getSliceIndex();
73176
73130
  const { sliceIndex } = viewRef;
73177
73131
  if (Array.isArray(sliceIndex)) {
73178
73132
  return (sliceIndex[0] <= currentSliceIndex && currentSliceIndex <= sliceIndex[1]);
73179
73133
  }
73180
73134
  return sliceIndex === undefined || sliceIndex === currentSliceIndex;
73181
73135
  }
73136
+ scroll(delta = 1) {
73137
+ const volumeId = this.getVolumeId();
73138
+ const { sliceRangeInfo } = (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.getVolumeViewportScrollInfo)(this, volumeId, true);
73139
+ if (!sliceRangeInfo) {
73140
+ return;
73141
+ }
73142
+ const { sliceRange, spacingInNormalDirection, camera } = sliceRangeInfo;
73143
+ const { focalPoint, viewPlaneNormal, position } = camera;
73144
+ const { newFocalPoint, newPosition } = (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.snapFocalPointToSlice)(focalPoint, position, sliceRange, viewPlaneNormal, spacingInNormalDirection, delta);
73145
+ this.setCamera({
73146
+ focalPoint: newFocalPoint,
73147
+ position: newPosition,
73148
+ });
73149
+ }
73150
+ setViewReference(viewRef) {
73151
+ if (!viewRef) {
73152
+ return;
73153
+ }
73154
+ const volumeId = this.getVolumeId();
73155
+ const { viewPlaneNormal: refViewPlaneNormal, FrameOfReferenceUID: refFrameOfReference, cameraFocalPoint, viewUp, } = viewRef;
73156
+ let { sliceIndex } = viewRef;
73157
+ const { focalPoint, viewPlaneNormal, position } = this.getCamera();
73158
+ const isNegativeNormal = (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.isEqualNegative)(viewPlaneNormal, refViewPlaneNormal);
73159
+ const isSameNormal = (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.isEqual)(viewPlaneNormal, refViewPlaneNormal);
73160
+ if (typeof sliceIndex === 'number' &&
73161
+ viewRef.volumeId === volumeId &&
73162
+ (isNegativeNormal || isSameNormal)) {
73163
+ const { currentStepIndex, sliceRangeInfo, numScrollSteps } = (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.getVolumeViewportScrollInfo)(this, volumeId, true);
73164
+ const { sliceRange, spacingInNormalDirection } = sliceRangeInfo;
73165
+ if (isNegativeNormal) {
73166
+ sliceIndex = numScrollSteps - sliceIndex - 1;
73167
+ }
73168
+ const delta = sliceIndex - currentStepIndex;
73169
+ const { newFocalPoint, newPosition } = (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.snapFocalPointToSlice)(focalPoint, position, sliceRange, viewPlaneNormal, spacingInNormalDirection, delta);
73170
+ this.setCamera({ focalPoint: newFocalPoint, position: newPosition });
73171
+ }
73172
+ else if (refFrameOfReference === this.getFrameOfReferenceUID()) {
73173
+ if (refViewPlaneNormal && !isNegativeNormal && !isSameNormal) {
73174
+ this.setOrientation({ viewPlaneNormal: refViewPlaneNormal, viewUp });
73175
+ return this.setViewReference(viewRef);
73176
+ }
73177
+ if (cameraFocalPoint) {
73178
+ const focalDelta = gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.subtract */ .eR.subtract([0, 0, 0], cameraFocalPoint, focalPoint);
73179
+ const useNormal = refViewPlaneNormal ?? viewPlaneNormal;
73180
+ const normalDot = gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.dot */ .eR.dot(focalDelta, useNormal);
73181
+ if (!(0,_utilities__WEBPACK_IMPORTED_MODULE_11__.isEqual)(normalDot, 0)) {
73182
+ gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.scale */ .eR.scale(focalDelta, useNormal, normalDot);
73183
+ }
73184
+ const newFocal = gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.add */ .eR.add([0, 0, 0], focalPoint, focalDelta);
73185
+ const newPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.add */ .eR.add([0, 0, 0], position, focalDelta);
73186
+ this.setCamera({ focalPoint: newFocal, position: newPosition });
73187
+ }
73188
+ }
73189
+ else {
73190
+ throw new Error(`Incompatible view refs: ${refFrameOfReference}!==${this.getFrameOfReferenceUID()}`);
73191
+ }
73192
+ }
73182
73193
  setProperties({ voiRange, VOILUTFunction, invert, colormap, preset, interpolationType, slabThickness, rotation, } = {}, volumeId, suppressEvents = false) {
73183
73194
  if (this.globalDefaultProperties == null) {
73184
73195
  this.setDefaultProperties({
@@ -73337,7 +73348,7 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
73337
73348
  this.render();
73338
73349
  }
73339
73350
  }
73340
- setOrientation(orientation, immediate = true) {
73351
+ setOrientation(_orientation, _immediate = true) {
73341
73352
  console.warn('Method "setOrientation" needs implementation');
73342
73353
  }
73343
73354
  initializeColorTransferFunction(volumeInputArray) {
@@ -73473,14 +73484,15 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
73473
73484
  return volume.getScalarData()[voxelIndex];
73474
73485
  }
73475
73486
  getVolumeId(specifier) {
73487
+ const actorEntries = this.getActors();
73488
+ if (!actorEntries) {
73489
+ return;
73490
+ }
73476
73491
  if (!specifier?.volumeId) {
73477
- const actorEntries = this.getActors();
73478
- if (!actorEntries) {
73479
- return;
73480
- }
73481
73492
  return actorEntries.find((actorEntry) => actorEntry.actor.getClassName() === 'vtkVolume')?.uid;
73482
73493
  }
73483
- return specifier.volumeId;
73494
+ return actorEntries.find((actorEntry) => actorEntry.actor.getClassName() === 'vtkVolume' &&
73495
+ actorEntry.uid === specifier.volumeId)?.uid;
73484
73496
  }
73485
73497
  getReferenceId(specifier = {}) {
73486
73498
  let { volumeId, sliceIndex: sliceIndex } = specifier;
@@ -73491,7 +73503,8 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
73491
73503
  }
73492
73504
  volumeId = actorEntries.find((actorEntry) => actorEntry.actor.getClassName() === 'vtkVolume')?.uid;
73493
73505
  }
73494
- sliceIndex ??= this.getCurrentImageIdIndex();
73506
+ const currentIndex = this.getSliceIndex();
73507
+ sliceIndex ??= currentIndex;
73495
73508
  const { viewPlaneNormal, focalPoint } = this.getCamera();
73496
73509
  const querySeparator = volumeId.indexOf('?') > -1 ? '&' : '?';
73497
73510
  return `volumeId:${volumeId}${querySeparator}sliceIndex=${sliceIndex}&viewPlaneNormal=${viewPlaneNormal.join(',')}&focalPoint=${focalPoint.join(',')}`;
@@ -74427,8 +74440,8 @@ var Viewport = __webpack_require__(11512);
74427
74440
  var colors = __webpack_require__(59693);
74428
74441
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/cpuFallback/drawImageSync.js + 22 modules
74429
74442
  var drawImageSync = __webpack_require__(49892);
74430
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 5 modules
74431
- var enums = __webpack_require__(50002);
74443
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
74444
+ var enums = __webpack_require__(98362);
74432
74445
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/imageLoader.js
74433
74446
  var imageLoader = __webpack_require__(79220);
74434
74447
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/requestPool/imageLoadPoolManager.js
@@ -74630,20 +74643,8 @@ class StackViewport extends Viewport/* default */.A {
74630
74643
  resize(this._cpuFallbackEnabledElement);
74631
74644
  }
74632
74645
  };
74633
- this.getFrameOfReferenceUID = () => {
74634
- const imageId = this.getCurrentImageId();
74635
- if (!imageId) {
74636
- return;
74637
- }
74638
- const imagePlaneModule = metaData.get('imagePlaneModule', imageId);
74639
- if (!imagePlaneModule) {
74640
- return;
74641
- }
74642
- return imagePlaneModule.frameOfReferenceUID;
74643
- };
74644
- this.getCornerstoneImage = () => {
74645
- return this.csImage;
74646
- };
74646
+ this.getFrameOfReferenceUID = (sliceIndex) => this.getImagePlaneReferenceData(sliceIndex)?.FrameOfReferenceUID;
74647
+ this.getCornerstoneImage = () => this.csImage;
74647
74648
  this.createActorMapper = (imageData) => {
74648
74649
  const mapper = vtkImageMapper$1.newInstance();
74649
74650
  mapper.setInputData(imageData);
@@ -75619,6 +75620,25 @@ class StackViewport extends Viewport/* default */.A {
75619
75620
  imagePixelModule,
75620
75621
  };
75621
75622
  }
75623
+ getImagePlaneReferenceData(sliceIndex = this.getCurrentImageIdIndex()) {
75624
+ const imageId = this.imageIds[sliceIndex];
75625
+ if (!imageId) {
75626
+ return;
75627
+ }
75628
+ const imagePlaneModule = metaData.get(enums.MetadataModules.IMAGE_PLANE, imageId);
75629
+ const { imagePositionPatient, frameOfReferenceUID: FrameOfReferenceUID } = imagePlaneModule;
75630
+ let { rowCosines, columnCosines } = imagePlaneModule;
75631
+ rowCosines ||= [1, 0, 0];
75632
+ columnCosines ||= [0, 1, 0];
75633
+ const viewPlaneNormal = (esm/* vec3.cross */.eR.cross([0, 0, 0], columnCosines, rowCosines));
75634
+ return {
75635
+ FrameOfReferenceUID,
75636
+ viewPlaneNormal,
75637
+ cameraFocalPoint: imagePositionPatient,
75638
+ referencedImageId: imageId,
75639
+ sliceIndex,
75640
+ };
75641
+ }
75622
75642
  _getCameraOrientation(imageDataDirection) {
75623
75643
  const viewPlaneNormal = imageDataDirection.slice(6, 9).map((x) => -x);
75624
75644
  const viewUp = imageDataDirection.slice(3, 6).map((x) => -x);
@@ -75934,7 +75954,7 @@ class StackViewport extends Viewport/* default */.A {
75934
75954
  this.cpuRenderingInvalidated = true;
75935
75955
  this._cpuFallbackEnabledElement.transform = (0,calculateTransform/* default */.A)(this._cpuFallbackEnabledElement);
75936
75956
  }
75937
- async addImages(stackInputs) {
75957
+ addImages(stackInputs) {
75938
75958
  const actors = this.getActors();
75939
75959
  stackInputs.forEach((stackInput) => {
75940
75960
  const image = cache/* default */.Ay.getImage(stackInput.imageId);
@@ -76229,24 +76249,39 @@ class StackViewport extends Viewport/* default */.A {
76229
76249
  return referencedImageId?.endsWith(imageURI);
76230
76250
  }
76231
76251
  getViewReference(viewRefSpecifier = {}) {
76232
- const { sliceIndex: sliceIndex = this.currentImageIdIndex } = viewRefSpecifier;
76233
- return {
76234
- ...super.getViewReference(viewRefSpecifier),
76235
- referencedImageId: `${this.imageIds[sliceIndex]}`,
76236
- sliceIndex: sliceIndex,
76237
- };
76238
- }
76239
- setView(viewRef, viewPres) {
76240
- const camera = this.getCamera();
76241
- super.setView(viewRef, viewPres);
76242
- if (viewRef) {
76243
- const { viewPlaneNormal, sliceIndex } = viewRef;
76244
- if (viewPlaneNormal &&
76245
- !(0,utilities.isEqual)(viewPlaneNormal, camera.viewPlaneNormal)) {
76252
+ const { sliceIndex = this.getCurrentImageIdIndex() } = viewRefSpecifier;
76253
+ const reference = super.getViewReference(viewRefSpecifier);
76254
+ const referencedImageId = this.imageIds[sliceIndex];
76255
+ if (!referencedImageId) {
76256
+ return;
76257
+ }
76258
+ reference.referencedImageId = referencedImageId;
76259
+ if (this.getCurrentImageIdIndex() !== sliceIndex) {
76260
+ const referenceData = this.getImagePlaneReferenceData(sliceIndex);
76261
+ if (!referenceData) {
76246
76262
  return;
76247
76263
  }
76248
- if (sliceIndex || sliceIndex === 0) {
76249
- this.setImageIdIndex(sliceIndex);
76264
+ Object.assign(reference, referenceData);
76265
+ }
76266
+ return reference;
76267
+ }
76268
+ setViewReference(viewRef) {
76269
+ if (!viewRef) {
76270
+ return;
76271
+ }
76272
+ const { referencedImageId, sliceIndex, volumeId } = viewRef;
76273
+ if (typeof sliceIndex === 'number' &&
76274
+ referencedImageId &&
76275
+ referencedImageId === this.imageIds[sliceIndex]) {
76276
+ this.setImageIdIndex(sliceIndex);
76277
+ }
76278
+ else {
76279
+ const foundIndex = this.imageIds.indexOf(referencedImageId);
76280
+ if (foundIndex !== -1) {
76281
+ this.setImageIdIndex(foundIndex);
76282
+ }
76283
+ else {
76284
+ throw new Error('Unsupported - referenced image id not found');
76250
76285
  }
76251
76286
  }
76252
76287
  }
@@ -76364,8 +76399,8 @@ __webpack_require__.d(__webpack_exports__, {
76364
76399
 
76365
76400
  // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
76366
76401
  var esm = __webpack_require__(44753);
76367
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 5 modules
76368
- var enums = __webpack_require__(50002);
76402
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
76403
+ var enums = __webpack_require__(98362);
76369
76404
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/metaData.js
76370
76405
  var metaData = __webpack_require__(55692);
76371
76406
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/transform.js
@@ -76663,22 +76698,21 @@ class VideoViewport extends Viewport/* default */.A {
76663
76698
  this.worldToCanvas = (worldPos) => {
76664
76699
  const pan = this.videoCamera.panWorld;
76665
76700
  const worldToCanvasRatio = this.getWorldToCanvasRatio();
76666
- const subCanvasPos = [
76701
+ const canvasPos = [
76667
76702
  (worldPos[0] + pan[0]) * worldToCanvasRatio,
76668
76703
  (worldPos[1] + pan[1]) * worldToCanvasRatio,
76669
76704
  ];
76670
- const canvasPos = [subCanvasPos[0], subCanvasPos[1]];
76671
76705
  return canvasPos;
76672
76706
  };
76673
76707
  this.getRotation = () => 0;
76674
76708
  this.canvasToIndex = (canvasPos) => {
76675
76709
  const transform = this.getTransform();
76676
76710
  transform.invert();
76677
- return transform.transformPoint(canvasPos);
76711
+ return transform.transformPoint(canvasPos.map((it) => it * devicePixelRatio));
76678
76712
  };
76679
76713
  this.indexToCanvas = (indexPos) => {
76680
76714
  const transform = this.getTransform();
76681
- return transform.transformPoint(indexPos);
76715
+ return (transform.transformPoint(indexPos).map((it) => it / devicePixelRatio));
76682
76716
  };
76683
76717
  this.customRenderViewportToCanvas = () => {
76684
76718
  this.renderFrame();
@@ -76686,8 +76720,10 @@ class VideoViewport extends Viewport/* default */.A {
76686
76720
  this.renderFrame = () => {
76687
76721
  const transform = this.getTransform();
76688
76722
  const transformationMatrix = transform.getMatrix();
76689
- this.canvasContext.transform(transformationMatrix[0], transformationMatrix[1], transformationMatrix[2], transformationMatrix[3], transformationMatrix[4], transformationMatrix[5]);
76690
- this.canvasContext.drawImage(this.videoElement, 0, 0, this.videoWidth, this.videoHeight);
76723
+ const ctx = this.canvasContext;
76724
+ ctx.resetTransform();
76725
+ ctx.transform(transformationMatrix[0], transformationMatrix[1], transformationMatrix[2], transformationMatrix[3], transformationMatrix[4], transformationMatrix[5]);
76726
+ ctx.drawImage(this.videoElement, 0, 0, this.videoWidth, this.videoHeight);
76691
76727
  for (const actor of this.getActors()) {
76692
76728
  actor.actor.render(this, this.canvasContext);
76693
76729
  }
@@ -77083,7 +77119,7 @@ class VideoViewport extends Viewport/* default */.A {
77083
77119
  }
77084
77120
  setCamera(camera) {
77085
77121
  const { parallelScale, focalPoint } = camera;
77086
- if (camera.parallelScale !== undefined) {
77122
+ if (parallelScale) {
77087
77123
  this.videoCamera.parallelScale =
77088
77124
  this.element.clientHeight / 2 / parallelScale;
77089
77125
  }
@@ -77141,7 +77177,7 @@ class VideoViewport extends Viewport/* default */.A {
77141
77177
  if (options.withNavigation) {
77142
77178
  return true;
77143
77179
  }
77144
- const currentIndex = this.getCurrentImageIdIndex();
77180
+ const currentIndex = this.getSliceIndex();
77145
77181
  if (Array.isArray(sliceIndex)) {
77146
77182
  return currentIndex >= sliceIndex[0] && currentIndex <= sliceIndex[1];
77147
77183
  }
@@ -77178,6 +77214,9 @@ class VideoViewport extends Viewport/* default */.A {
77178
77214
  getCurrentImageIdIndex() {
77179
77215
  return Math.round(this.videoElement.currentTime * this.fps);
77180
77216
  }
77217
+ getSliceIndex() {
77218
+ return this.getCurrentImageIdIndex();
77219
+ }
77181
77220
  getCamera() {
77182
77221
  const { parallelScale } = this.videoCamera;
77183
77222
  const canvasCenter = [
@@ -77195,19 +77234,18 @@ class VideoViewport extends Viewport/* default */.A {
77195
77234
  };
77196
77235
  }
77197
77236
  getPan() {
77198
- const worldPan = this.videoCamera.panWorld;
77199
- return [worldPan[0], worldPan[1]];
77237
+ const panWorld = this.videoCamera.panWorld;
77238
+ return [panWorld[0], panWorld[1]];
77200
77239
  }
77201
77240
  refreshRenderValues() {
77202
- let worldToCanvasRatio = this.canvas.width / this.videoWidth;
77241
+ let worldToCanvasRatio = this.canvas.offsetWidth / this.videoWidth;
77203
77242
  if (this.videoHeight * worldToCanvasRatio > this.canvas.height) {
77204
- const secondWorldToCanvasRatio = this.canvas.height / (this.videoHeight * worldToCanvasRatio);
77205
- worldToCanvasRatio *= secondWorldToCanvasRatio;
77243
+ worldToCanvasRatio = this.canvas.offsetHeight / this.videoHeight;
77206
77244
  }
77207
77245
  const drawWidth = Math.floor(this.videoWidth * worldToCanvasRatio);
77208
77246
  const drawHeight = Math.floor(this.videoHeight * worldToCanvasRatio);
77209
- const xOffsetCanvas = this.canvas.width / 2 - drawWidth / 2;
77210
- const yOffsetCanvas = this.canvas.height / 2 - drawHeight / 2;
77247
+ const xOffsetCanvas = (this.canvas.offsetWidth - drawWidth) / 2;
77248
+ const yOffsetCanvas = (this.canvas.offsetHeight - drawHeight) / 2;
77211
77249
  const xOffsetWorld = xOffsetCanvas / worldToCanvasRatio;
77212
77250
  const yOffsetWorld = yOffsetCanvas / worldToCanvasRatio;
77213
77251
  this.videoCamera.panWorld = [xOffsetWorld, yOffsetWorld];
@@ -77221,14 +77259,19 @@ class VideoViewport extends Viewport/* default */.A {
77221
77259
  }
77222
77260
  getTransform() {
77223
77261
  const panWorld = this.videoCamera.panWorld;
77262
+ const devicePixelRatio = window.devicePixelRatio || 1;
77224
77263
  const worldToCanvasRatio = this.getWorldToCanvasRatio();
77225
77264
  const canvasToWorldRatio = this.getCanvasToWorldRatio();
77226
- const halfCanvas = [this.canvas.width / 2, this.canvas.height / 2];
77265
+ const halfCanvas = [
77266
+ this.canvas.offsetWidth / 2,
77267
+ this.canvas.offsetHeight / 2,
77268
+ ];
77227
77269
  const halfCanvasWorldCoordinates = [
77228
77270
  halfCanvas[0] * canvasToWorldRatio,
77229
77271
  halfCanvas[1] * canvasToWorldRatio,
77230
77272
  ];
77231
77273
  const transform = new rendering_transform/* Transform */.d();
77274
+ transform.scale(devicePixelRatio, devicePixelRatio);
77232
77275
  transform.translate(halfCanvas[0], halfCanvas[1]);
77233
77276
  transform.scale(worldToCanvasRatio, worldToCanvasRatio);
77234
77277
  transform.translate(panWorld[0], panWorld[1]);
@@ -77281,7 +77324,7 @@ class VideoViewport extends Viewport/* default */.A {
77281
77324
  /* harmony import */ var _utilities_hasNaNValues__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(73139);
77282
77325
  /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(88903);
77283
77326
  /* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(71702);
77284
- /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(50002);
77327
+ /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(98362);
77285
77328
 
77286
77329
 
77287
77330
 
@@ -77577,7 +77620,7 @@ class Viewport {
77577
77620
  this.setDisplayAreaScale(displayArea);
77578
77621
  }
77579
77622
  else {
77580
- this.setInterpolationType(this.getProperties().interpolationType || _enums__WEBPACK_IMPORTED_MODULE_13__.InterpolationType.LINEAR);
77623
+ this.setInterpolationType(this.getProperties()?.interpolationType || _enums__WEBPACK_IMPORTED_MODULE_13__.InterpolationType.LINEAR);
77581
77624
  this.setDisplayAreaFit(displayArea);
77582
77625
  }
77583
77626
  if (storeAsInitialCamera) {
@@ -77783,6 +77826,9 @@ class Viewport {
77783
77826
  getCurrentImageIdIndex() {
77784
77827
  throw new Error('Not implemented');
77785
77828
  }
77829
+ getSliceIndex() {
77830
+ throw new Error('Not implemented');
77831
+ }
77786
77832
  getReferenceId(_specifier) {
77787
77833
  return null;
77788
77834
  }
@@ -77806,6 +77852,9 @@ class Viewport {
77806
77852
  }, storeAsInitialCamera);
77807
77853
  }
77808
77854
  getZoom(compareCamera = this.initialCamera) {
77855
+ if (!compareCamera) {
77856
+ return 1;
77857
+ }
77809
77858
  const activeCamera = this.getVtkActiveCamera();
77810
77859
  const { parallelScale: initialParallelScale } = compareCamera;
77811
77860
  return initialParallelScale / activeCamera.getParallelScale();
@@ -78059,12 +78108,13 @@ class Viewport {
78059
78108
  return { widthWorld: maxX - minX, heightWorld: maxY - minY };
78060
78109
  }
78061
78110
  getViewReference(viewRefSpecifier = {}) {
78062
- const { focalPoint: cameraFocalPoint, viewPlaneNormal } = this.getCamera();
78111
+ const { focalPoint: cameraFocalPoint, viewPlaneNormal, viewUp, } = this.getCamera();
78063
78112
  const target = {
78064
78113
  FrameOfReferenceUID: this.getFrameOfReferenceUID(),
78065
78114
  cameraFocalPoint,
78066
78115
  viewPlaneNormal,
78067
- sliceIndex: viewRefSpecifier.sliceIndex ?? this.getCurrentImageIdIndex(),
78116
+ viewUp,
78117
+ sliceIndex: viewRefSpecifier.sliceIndex ?? this.getSliceIndex(),
78068
78118
  };
78069
78119
  return target;
78070
78120
  }
@@ -78078,7 +78128,7 @@ class Viewport {
78078
78128
  if (viewPlaneNormal &&
78079
78129
  !(0,_utilities__WEBPACK_IMPORTED_MODULE_9__.isEqual)(viewPlaneNormal, camera.viewPlaneNormal) &&
78080
78130
  !(0,_utilities__WEBPACK_IMPORTED_MODULE_9__.isEqual)(gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec3.negate */ .eR.negate(camera.viewPlaneNormal, camera.viewPlaneNormal), viewPlaneNormal)) {
78081
- return options?.asVolume === true;
78131
+ return options?.withOrientation === true;
78082
78132
  }
78083
78133
  return true;
78084
78134
  }
@@ -78106,19 +78156,22 @@ class Viewport {
78106
78156
  }
78107
78157
  return target;
78108
78158
  }
78109
- setView(viewRef, viewPres) {
78110
- if (viewPres) {
78111
- const { displayArea, zoom = this.getZoom(), pan, rotation } = viewPres;
78112
- if (displayArea !== this.getDisplayArea()) {
78113
- this.setDisplayArea(displayArea);
78114
- }
78115
- this.setZoom(zoom);
78116
- if (pan) {
78117
- this.setPan(gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec2.scale */ .Zc.scale([0, 0], pan, zoom));
78118
- }
78119
- if (rotation >= 0) {
78120
- this.setRotation(rotation);
78121
- }
78159
+ setViewReference(viewRef) {
78160
+ }
78161
+ setViewPresentation(viewPres) {
78162
+ if (!viewPres) {
78163
+ return;
78164
+ }
78165
+ const { displayArea, zoom = this.getZoom(), pan, rotation } = viewPres;
78166
+ if (displayArea !== this.getDisplayArea()) {
78167
+ this.setDisplayArea(displayArea);
78168
+ }
78169
+ this.setZoom(zoom);
78170
+ if (pan) {
78171
+ this.setPan(gl_matrix__WEBPACK_IMPORTED_MODULE_3__/* .vec2.scale */ .Zc.scale([0, 0], pan, zoom));
78172
+ }
78173
+ if (rotation >= 0) {
78174
+ this.setRotation(rotation);
78122
78175
  }
78123
78176
  }
78124
78177
  _shouldUseNativeDataType() {
@@ -78207,15 +78260,15 @@ class Viewport {
78207
78260
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
78208
78261
  /* harmony export */ });
78209
78262
  /* harmony import */ var _kitware_vtk_js_Common_DataModel_Plane__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84441);
78210
- /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44753);
78211
- /* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13320);
78212
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(88903);
78213
- /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50002);
78214
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(35678);
78215
- /* harmony import */ var _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6203);
78216
- /* harmony import */ var _helpers_setDefaultVolumeVOI__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(83853);
78217
- /* harmony import */ var _utilities_transferFunctionUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(22350);
78218
- /* harmony import */ var _utilities_getImageSliceDataForVolumeViewport__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(97508);
78263
+ /* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13320);
78264
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(88903);
78265
+ /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(98362);
78266
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(35678);
78267
+ /* harmony import */ var _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6203);
78268
+ /* harmony import */ var _helpers_setDefaultVolumeVOI__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(83853);
78269
+ /* harmony import */ var _utilities_transferFunctionUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(22350);
78270
+ /* harmony import */ var _utilities_getImageSliceDataForVolumeViewport__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(97508);
78271
+ /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(44753);
78219
78272
 
78220
78273
 
78221
78274
 
@@ -78226,18 +78279,14 @@ class Viewport {
78226
78279
 
78227
78280
 
78228
78281
 
78229
- class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A {
78282
+ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A {
78230
78283
  constructor(props) {
78231
78284
  super(props);
78232
78285
  this._useAcquisitionPlaneForViewPlane = false;
78233
78286
  this.getNumberOfSlices = () => {
78234
- const { numberOfSlices } = (0,_utilities_getImageSliceDataForVolumeViewport__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)(this);
78287
+ const { numberOfSlices } = (0,_utilities_getImageSliceDataForVolumeViewport__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(this);
78235
78288
  return numberOfSlices;
78236
78289
  };
78237
- this.getSliceIndex = () => {
78238
- const { imageIndex } = (0,_utilities_getImageSliceDataForVolumeViewport__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)(this);
78239
- return imageIndex;
78240
- };
78241
78290
  this.getCurrentImageIdIndex = (volumeId) => {
78242
78291
  const { viewPlaneNormal, focalPoint } = this.getCamera();
78243
78292
  const imageData = this.getImageData(volumeId);
@@ -78245,24 +78294,28 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78245
78294
  return;
78246
78295
  }
78247
78296
  const { origin, direction, spacing } = imageData;
78248
- const spacingInNormal = (0,_utilities__WEBPACK_IMPORTED_MODULE_5__.getSpacingInNormalDirection)({ direction, spacing }, viewPlaneNormal);
78249
- const sub = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.create */ .eR.create();
78250
- gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.sub */ .eR.sub(sub, focalPoint, origin);
78251
- const distance = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.dot */ .eR.dot(sub, viewPlaneNormal);
78297
+ const spacingInNormal = (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.getSpacingInNormalDirection)({ direction, spacing }, viewPlaneNormal);
78298
+ const sub = gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.create */ .eR.create();
78299
+ gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.sub */ .eR.sub(sub, focalPoint, origin);
78300
+ const distance = gl_matrix__WEBPACK_IMPORTED_MODULE_9__/* .vec3.dot */ .eR.dot(sub, viewPlaneNormal);
78252
78301
  return Math.round(Math.abs(distance) / spacingInNormal);
78253
78302
  };
78303
+ this.getSliceIndex = () => {
78304
+ const { imageIndex } = (0,_utilities_getImageSliceDataForVolumeViewport__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(this);
78305
+ return imageIndex;
78306
+ };
78254
78307
  this.getCurrentImageId = () => {
78255
78308
  const actorEntry = this.getDefaultActor();
78256
- if (!actorEntry || !(0,_utilities__WEBPACK_IMPORTED_MODULE_5__.actorIsA)(actorEntry, 'vtkVolume')) {
78309
+ if (!actorEntry || !(0,_utilities__WEBPACK_IMPORTED_MODULE_4__.actorIsA)(actorEntry, 'vtkVolume')) {
78257
78310
  return;
78258
78311
  }
78259
78312
  const { uid } = actorEntry;
78260
- const volume = _cache__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay.getVolume(uid);
78313
+ const volume = _cache__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Ay.getVolume(uid);
78261
78314
  if (!volume) {
78262
78315
  return;
78263
78316
  }
78264
78317
  const { viewPlaneNormal, focalPoint } = this.getCamera();
78265
- return (0,_utilities__WEBPACK_IMPORTED_MODULE_5__.getClosestImageId)(volume, focalPoint, viewPlaneNormal);
78318
+ return (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.getClosestImageId)(volume, focalPoint, viewPlaneNormal);
78266
78319
  };
78267
78320
  this.getSlicePlaneCoordinates = () => {
78268
78321
  const actorEntry = this.getDefaultActor();
@@ -78271,30 +78324,30 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78271
78324
  return [];
78272
78325
  }
78273
78326
  const volumeId = actorEntry.uid;
78274
- const imageVolume = _cache__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay.getVolume(volumeId);
78327
+ const imageVolume = _cache__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Ay.getVolume(volumeId);
78275
78328
  const camera = this.getCamera();
78276
78329
  const { focalPoint, position, viewPlaneNormal } = camera;
78277
- const spacingInNormalDirection = (0,_utilities__WEBPACK_IMPORTED_MODULE_5__.getSpacingInNormalDirection)(imageVolume, viewPlaneNormal);
78278
- const sliceRange = (0,_utilities__WEBPACK_IMPORTED_MODULE_5__.getSliceRange)(actorEntry.actor, viewPlaneNormal, focalPoint);
78330
+ const spacingInNormalDirection = (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.getSpacingInNormalDirection)(imageVolume, viewPlaneNormal);
78331
+ const sliceRange = (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.getSliceRange)(actorEntry.actor, viewPlaneNormal, focalPoint);
78279
78332
  const numSlicesBackward = Math.round((sliceRange.current - sliceRange.min) / spacingInNormalDirection);
78280
78333
  const numSlicesForward = Math.round((sliceRange.max - sliceRange.current) / spacingInNormalDirection);
78281
78334
  const currentSliceIndex = this.getSliceIndex();
78282
78335
  const focalPoints = [];
78283
78336
  for (let i = -numSlicesBackward; i <= numSlicesForward; i++) {
78284
- const { newFocalPoint: point } = (0,_utilities__WEBPACK_IMPORTED_MODULE_5__.snapFocalPointToSlice)(focalPoint, position, sliceRange, viewPlaneNormal, spacingInNormalDirection, i);
78337
+ const { newFocalPoint: point } = (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.snapFocalPointToSlice)(focalPoint, position, sliceRange, viewPlaneNormal, spacingInNormalDirection, i);
78285
78338
  focalPoints.push({ sliceIndex: currentSliceIndex + i, point });
78286
78339
  }
78287
78340
  return focalPoints;
78288
78341
  };
78289
78342
  const { orientation } = this.options;
78290
- if (orientation && orientation !== _enums__WEBPACK_IMPORTED_MODULE_4__.OrientationAxis.ACQUISITION) {
78343
+ if (orientation && orientation !== _enums__WEBPACK_IMPORTED_MODULE_3__.OrientationAxis.ACQUISITION) {
78291
78344
  this.applyViewOrientation(orientation);
78292
78345
  return;
78293
78346
  }
78294
78347
  this._useAcquisitionPlaneForViewPlane = true;
78295
78348
  }
78296
78349
  async setVolumes(volumeInputArray, immediate = false, suppressEvents = false) {
78297
- const firstImageVolume = _cache__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay.getVolume(volumeInputArray[0].volumeId);
78350
+ const firstImageVolume = _cache__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Ay.getVolume(volumeInputArray[0].volumeId);
78298
78351
  if (!firstImageVolume) {
78299
78352
  throw new Error(`imageVolume with id: ${firstImageVolume.volumeId} does not exist`);
78300
78353
  }
@@ -78305,7 +78358,7 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78305
78358
  return super.setVolumes(volumeInputArray, immediate, suppressEvents);
78306
78359
  }
78307
78360
  async addVolumes(volumeInputArray, immediate = false, suppressEvents = false) {
78308
- const firstImageVolume = _cache__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay.getVolume(volumeInputArray[0].volumeId);
78361
+ const firstImageVolume = _cache__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Ay.getVolume(volumeInputArray[0].volumeId);
78309
78362
  if (!firstImageVolume) {
78310
78363
  throw new Error(`imageVolume with id: ${firstImageVolume.volumeId} does not exist`);
78311
78364
  }
@@ -78318,8 +78371,8 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78318
78371
  setOrientation(orientation, immediate = true) {
78319
78372
  let viewPlaneNormal, viewUp;
78320
78373
  if (typeof orientation === 'string') {
78321
- if (_constants__WEBPACK_IMPORTED_MODULE_3__.MPR_CAMERA_VALUES[orientation]) {
78322
- ({ viewPlaneNormal, viewUp } = _constants__WEBPACK_IMPORTED_MODULE_3__.MPR_CAMERA_VALUES[orientation]);
78374
+ if (_constants__WEBPACK_IMPORTED_MODULE_2__.MPR_CAMERA_VALUES[orientation]) {
78375
+ ({ viewPlaneNormal, viewUp } = _constants__WEBPACK_IMPORTED_MODULE_2__.MPR_CAMERA_VALUES[orientation]);
78323
78376
  }
78324
78377
  else if (orientation === 'acquisition') {
78325
78378
  ({ viewPlaneNormal, viewUp } = this._getAcquisitionPlaneOrientation());
@@ -78348,7 +78401,7 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78348
78401
  return;
78349
78402
  }
78350
78403
  const volumeId = actorEntry.uid;
78351
- const imageVolume = _cache__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay.getVolume(volumeId);
78404
+ const imageVolume = _cache__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Ay.getVolume(volumeId);
78352
78405
  if (!imageVolume) {
78353
78406
  throw new Error(`imageVolume with id: ${volumeId} does not exist in cache`);
78354
78407
  }
@@ -78393,12 +78446,15 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78393
78446
  this.render();
78394
78447
  }
78395
78448
  }
78396
- resetCamera(resetPan = true, resetZoom = true, resetToCenter = true, resetRotation = false) {
78449
+ resetCamera(resetPan = true, resetZoom = true, resetToCenter = true, resetRotation = false, supressEvents = false) {
78450
+ const { orientation } = this.viewportProperties;
78451
+ if (orientation) {
78452
+ this.applyViewOrientation(orientation, false);
78453
+ }
78397
78454
  super.resetCamera(resetPan, resetZoom, resetToCenter);
78398
78455
  this.resetVolumeViewportClippingRange();
78399
78456
  const activeCamera = this.getVtkActiveCamera();
78400
78457
  const viewPlaneNormal = activeCamera.getViewPlaneNormal();
78401
- const viewUp = activeCamera.getViewUp();
78402
78458
  const focalPoint = activeCamera.getFocalPoint();
78403
78459
  const actorEntries = this.getActors();
78404
78460
  actorEntries.forEach((actorEntry) => {
@@ -78411,7 +78467,7 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78411
78467
  const clipPlane1 = _kitware_vtk_js_Common_DataModel_Plane__WEBPACK_IMPORTED_MODULE_0__/* ["default"].newInstance */ .Ay.newInstance();
78412
78468
  const clipPlane2 = _kitware_vtk_js_Common_DataModel_Plane__WEBPACK_IMPORTED_MODULE_0__/* ["default"].newInstance */ .Ay.newInstance();
78413
78469
  const newVtkPlanes = [clipPlane1, clipPlane2];
78414
- let slabThickness = _constants__WEBPACK_IMPORTED_MODULE_3__.RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
78470
+ let slabThickness = _constants__WEBPACK_IMPORTED_MODULE_2__.RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
78415
78471
  if (actorEntry.slabThickness) {
78416
78472
  slabThickness = actorEntry.slabThickness;
78417
78473
  }
@@ -78421,13 +78477,22 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78421
78477
  }
78422
78478
  });
78423
78479
  if (resetRotation &&
78424
- _constants__WEBPACK_IMPORTED_MODULE_3__.MPR_CAMERA_VALUES[this.viewportProperties.orientation] !== undefined) {
78425
- const viewToReset = _constants__WEBPACK_IMPORTED_MODULE_3__.MPR_CAMERA_VALUES[this.viewportProperties.orientation];
78480
+ _constants__WEBPACK_IMPORTED_MODULE_2__.MPR_CAMERA_VALUES[this.viewportProperties.orientation] !== undefined) {
78481
+ const viewToReset = _constants__WEBPACK_IMPORTED_MODULE_2__.MPR_CAMERA_VALUES[this.viewportProperties.orientation];
78426
78482
  this.setCameraNoEvent({
78427
78483
  viewUp: viewToReset.viewUp,
78428
78484
  viewPlaneNormal: viewToReset.viewPlaneNormal,
78429
78485
  });
78430
78486
  }
78487
+ if (!supressEvents) {
78488
+ const eventDetail = {
78489
+ viewportId: this.id,
78490
+ camera: this.getCamera(),
78491
+ renderingEngineId: this.renderingEngineId,
78492
+ element: this.element,
78493
+ };
78494
+ (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.triggerEvent)(this.element, _enums__WEBPACK_IMPORTED_MODULE_3__.Events.CAMERA_RESET, eventDetail);
78495
+ }
78431
78496
  return true;
78432
78497
  }
78433
78498
  setSlabThickness(slabThickness, filterActorUIDs = []) {
@@ -78441,7 +78506,7 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78441
78506
  });
78442
78507
  }
78443
78508
  actorEntries.forEach((actorEntry) => {
78444
- if ((0,_utilities__WEBPACK_IMPORTED_MODULE_5__.actorIsA)(actorEntry, 'vtkVolume')) {
78509
+ if ((0,_utilities__WEBPACK_IMPORTED_MODULE_4__.actorIsA)(actorEntry, 'vtkVolume')) {
78445
78510
  actorEntry.slabThickness = slabThickness;
78446
78511
  }
78447
78512
  });
@@ -78450,6 +78515,27 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78450
78515
  this.triggerCameraModifiedEventIfNecessary(currentCamera, currentCamera);
78451
78516
  this.viewportProperties.slabThickness = slabThickness;
78452
78517
  }
78518
+ resetSlabThickness() {
78519
+ const actorEntries = this.getActors();
78520
+ actorEntries.forEach((actorEntry) => {
78521
+ if ((0,_utilities__WEBPACK_IMPORTED_MODULE_4__.actorIsA)(actorEntry, 'vtkVolume')) {
78522
+ actorEntry.slabThickness = _constants__WEBPACK_IMPORTED_MODULE_2__.RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
78523
+ }
78524
+ });
78525
+ const currentCamera = this.getCamera();
78526
+ this.updateClippingPlanesForActors(currentCamera);
78527
+ this.triggerCameraModifiedEventIfNecessary(currentCamera, currentCamera);
78528
+ this.viewportProperties.slabThickness = undefined;
78529
+ }
78530
+ getViewReference(viewRefSpecifier = {}) {
78531
+ const viewRef = super.getViewReference(viewRefSpecifier);
78532
+ if (!viewRef?.volumeId) {
78533
+ return;
78534
+ }
78535
+ const volume = _cache__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Ay.getVolume(viewRef.volumeId);
78536
+ viewRef.referencedImageId = (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.getClosestImageId)(volume, viewRef.cameraFocalPoint, viewRef.viewPlaneNormal);
78537
+ return viewRef;
78538
+ }
78453
78539
  resetProperties(volumeId) {
78454
78540
  this._resetProperties(volumeId);
78455
78541
  }
@@ -78461,20 +78547,20 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78461
78547
  throw new Error(`No actor found for the given volumeId: ${volumeId}`);
78462
78548
  }
78463
78549
  if (volumeActor.slabThickness) {
78464
- volumeActor.slabThickness = _constants__WEBPACK_IMPORTED_MODULE_3__.RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
78550
+ volumeActor.slabThickness = _constants__WEBPACK_IMPORTED_MODULE_2__.RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
78465
78551
  this.viewportProperties.slabThickness = undefined;
78466
78552
  this.updateClippingPlanesForActors(this.getCamera());
78467
78553
  }
78468
- const imageVolume = _cache__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay.getVolume(volumeActor.uid);
78554
+ const imageVolume = _cache__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Ay.getVolume(volumeActor.uid);
78469
78555
  if (!imageVolume) {
78470
78556
  throw new Error(`imageVolume with id: ${volumeActor.uid} does not exist in cache`);
78471
78557
  }
78472
- (0,_helpers_setDefaultVolumeVOI__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(volumeActor.actor, imageVolume, false);
78473
- if ((0,_utilities__WEBPACK_IMPORTED_MODULE_5__.isImageActor)(volumeActor)) {
78558
+ (0,_helpers_setDefaultVolumeVOI__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A)(volumeActor.actor, imageVolume, false);
78559
+ if ((0,_utilities__WEBPACK_IMPORTED_MODULE_4__.isImageActor)(volumeActor)) {
78474
78560
  const transferFunction = volumeActor.actor
78475
78561
  .getProperty()
78476
78562
  .getRGBTransferFunction(0);
78477
- (0,_utilities_transferFunctionUtils__WEBPACK_IMPORTED_MODULE_8__.setTransferFunctionNodes)(transferFunction, this.initialTransferFunctionNodes);
78563
+ (0,_utilities_transferFunctionUtils__WEBPACK_IMPORTED_MODULE_7__.setTransferFunctionNodes)(transferFunction, this.initialTransferFunctionNodes);
78478
78564
  }
78479
78565
  const eventDetails = {
78480
78566
  ...super.getVOIModifiedEventDetail(volumeId),
@@ -78484,12 +78570,12 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78484
78570
  const resetToCenter = true;
78485
78571
  const resetCameraRotation = true;
78486
78572
  this.resetCamera(resetPan, resetZoom, resetToCenter, resetCameraRotation);
78487
- (0,_utilities__WEBPACK_IMPORTED_MODULE_5__.triggerEvent)(this.element, _enums__WEBPACK_IMPORTED_MODULE_4__.Events.VOI_MODIFIED, eventDetails);
78573
+ (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.triggerEvent)(this.element, _enums__WEBPACK_IMPORTED_MODULE_3__.Events.VOI_MODIFIED, eventDetails);
78488
78574
  }
78489
78575
  getSlicesClippingPlanes() {
78490
78576
  const focalPoints = this.getSlicePlaneCoordinates();
78491
78577
  const { viewPlaneNormal } = this.getCamera();
78492
- const slabThickness = _constants__WEBPACK_IMPORTED_MODULE_3__.RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
78578
+ const slabThickness = _constants__WEBPACK_IMPORTED_MODULE_2__.RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
78493
78579
  return focalPoints.map(({ point, sliceIndex }) => {
78494
78580
  const vtkPlanes = [_kitware_vtk_js_Common_DataModel_Plane__WEBPACK_IMPORTED_MODULE_0__/* ["default"].newInstance */ .Ay.newInstance(), _kitware_vtk_js_Common_DataModel_Plane__WEBPACK_IMPORTED_MODULE_0__/* ["default"].newInstance */ .Ay.newInstance()];
78495
78581
  this.setOrientationOfClippingPlanes(vtkPlanes, slabThickness, viewPlaneNormal, point);
@@ -78515,7 +78601,7 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78515
78601
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
78516
78602
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
78517
78603
  /* harmony export */ });
78518
- /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50002);
78604
+ /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(98362);
78519
78605
  /* harmony import */ var _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6203);
78520
78606
 
78521
78607
 
@@ -78552,6 +78638,9 @@ class VolumeViewport3D extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_1__/
78552
78638
  resetProperties(volumeId) {
78553
78639
  return null;
78554
78640
  }
78641
+ resetSlabThickness() {
78642
+ return null;
78643
+ }
78555
78644
  }
78556
78645
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VolumeViewport3D);
78557
78646
 
@@ -78587,7 +78676,7 @@ function getRenderingEngines() {
78587
78676
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
78588
78677
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
78589
78678
  /* harmony export */ });
78590
- async function addImageSlicesToViewports(renderingEngine, stackInputs, viewportIds, immediateRender = false, suppressEvents = false) {
78679
+ async function addImageSlicesToViewports(renderingEngine, stackInputs, viewportIds) {
78591
78680
  for (const viewportId of viewportIds) {
78592
78681
  const viewport = renderingEngine.getViewport(viewportId);
78593
78682
  if (!viewport) {
@@ -78600,7 +78689,7 @@ async function addImageSlicesToViewports(renderingEngine, stackInputs, viewportI
78600
78689
  }
78601
78690
  const addStackPromises = viewportIds.map(async (viewportId) => {
78602
78691
  const viewport = renderingEngine.getViewport(viewportId);
78603
- return viewport.addImages(stackInputs, immediateRender, suppressEvents);
78692
+ return viewport.addImages(stackInputs);
78604
78693
  });
78605
78694
  await Promise.all(addStackPromises);
78606
78695
  }
@@ -80908,8 +80997,8 @@ function createVolumeMapper(imageData, vtkOpenGLTexture) {
80908
80997
 
80909
80998
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 70 modules
80910
80999
  var utilities = __webpack_require__(35678);
80911
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 5 modules
80912
- var enums = __webpack_require__(50002);
81000
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
81001
+ var enums = __webpack_require__(98362);
80913
81002
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js
80914
81003
  var setDefaultVolumeVOI = __webpack_require__(83853);
80915
81004
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/createVolumeActor.js
@@ -80939,9 +81028,7 @@ async function createVolumeActor(props, element, viewportId, suppressEvents = fa
80939
81028
  if (numberOfComponents === 3) {
80940
81029
  volumeActor.getProperty().setIndependentComponents(false);
80941
81030
  }
80942
- if (imageVolume.imageIds?.length) {
80943
- await (0,setDefaultVolumeVOI/* default */.A)(volumeActor, imageVolume, useNativeDataType);
80944
- }
81031
+ await (0,setDefaultVolumeVOI/* default */.A)(volumeActor, imageVolume, useNativeDataType);
80945
81032
  if (callback) {
80946
81033
  callback({ volumeActor, volumeId });
80947
81034
  }
@@ -81021,7 +81108,7 @@ var addImageSlicesToViewports = __webpack_require__(25271);
81021
81108
  /* harmony import */ var _loaders_imageLoader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79220);
81022
81109
  /* harmony import */ var _metaData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55692);
81023
81110
  /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(35678);
81024
- /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(50002);
81111
+ /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(98362);
81025
81112
  /* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13320);
81026
81113
 
81027
81114
 
@@ -81032,21 +81119,19 @@ const PRIORITY = 0;
81032
81119
  const REQUEST_TYPE = _enums__WEBPACK_IMPORTED_MODULE_3__.RequestType.Prefetch;
81033
81120
  async function setDefaultVolumeVOI(volumeActor, imageVolume, useNativeDataType) {
81034
81121
  let voi = getVOIFromMetadata(imageVolume);
81035
- if (!voi) {
81122
+ if (!voi && imageVolume?.imageIds?.length) {
81036
81123
  voi = await getVOIFromMinMax(imageVolume, useNativeDataType);
81124
+ voi = handlePreScaledVolume(imageVolume, voi);
81037
81125
  }
81038
- if (!voi || voi.lower === undefined || voi.upper === undefined) {
81039
- throw new Error('Could not get VOI from metadata, nor from the min max of the image middle slice');
81040
- }
81041
- voi = handlePreScaledVolume(imageVolume, voi);
81042
- const { lower, upper } = voi;
81043
- if (lower === 0 && upper === 0) {
81126
+ if ((voi?.lower === 0 && voi?.upper === 0) ||
81127
+ voi?.lower === undefined ||
81128
+ voi?.upper === undefined) {
81044
81129
  return;
81045
81130
  }
81046
81131
  volumeActor
81047
81132
  .getProperty()
81048
81133
  .getRGBTransferFunction(0)
81049
- .setMappingRange(lower, upper);
81134
+ .setMappingRange(voi.lower, voi.upper);
81050
81135
  }
81051
81136
  function handlePreScaledVolume(imageVolume, voi) {
81052
81137
  const imageIds = imageVolume.imageIds;
@@ -81062,18 +81147,26 @@ function handlePreScaledVolume(imageVolume, voi) {
81062
81147
  return voi;
81063
81148
  }
81064
81149
  function getVOIFromMetadata(imageVolume) {
81065
- const { imageIds } = imageVolume;
81066
- const imageIdIndex = Math.floor(imageIds.length / 2);
81067
- const imageId = imageIds[imageIdIndex];
81068
- const voiLutModule = _metaData__WEBPACK_IMPORTED_MODULE_1__.get('voiLutModule', imageId);
81069
- if (voiLutModule && voiLutModule.windowWidth && voiLutModule.windowCenter) {
81070
- const { windowWidth, windowCenter } = voiLutModule;
81071
- const voi = {
81072
- windowWidth: Array.isArray(windowWidth) ? windowWidth[0] : windowWidth,
81073
- windowCenter: Array.isArray(windowCenter)
81074
- ? windowCenter[0]
81075
- : windowCenter,
81076
- };
81150
+ const { imageIds, metadata } = imageVolume;
81151
+ let voi;
81152
+ if (imageIds.length) {
81153
+ const imageIdIndex = Math.floor(imageIds.length / 2);
81154
+ const imageId = imageIds[imageIdIndex];
81155
+ const voiLutModule = _metaData__WEBPACK_IMPORTED_MODULE_1__.get('voiLutModule', imageId);
81156
+ if (voiLutModule && voiLutModule.windowWidth && voiLutModule.windowCenter) {
81157
+ const { windowWidth, windowCenter } = voiLutModule;
81158
+ voi = {
81159
+ windowWidth: Array.isArray(windowWidth) ? windowWidth[0] : windowWidth,
81160
+ windowCenter: Array.isArray(windowCenter)
81161
+ ? windowCenter[0]
81162
+ : windowCenter,
81163
+ };
81164
+ }
81165
+ }
81166
+ else {
81167
+ voi = metadata?.voiLut?.[0];
81168
+ }
81169
+ if (voi) {
81077
81170
  const { lower, upper } = _utilities__WEBPACK_IMPORTED_MODULE_2__.windowLevel.toLowHighRange(Number(voi.windowWidth), Number(voi.windowCenter));
81078
81171
  return {
81079
81172
  lower,
@@ -81136,13 +81229,13 @@ async function getVOIFromMinMax(imageVolume, useNativeDataType) {
81136
81229
  }
81137
81230
  function _getImageScalarDataFromImageVolume(imageVolume, byteOffset, bytePerPixel, voxelsPerImage) {
81138
81231
  const { scalarData } = imageVolume;
81139
- const { volumeBuffer } = scalarData;
81232
+ const { buffer } = scalarData;
81140
81233
  if (scalarData.BYTES_PER_ELEMENT !== bytePerPixel) {
81141
81234
  byteOffset *= scalarData.BYTES_PER_ELEMENT / bytePerPixel;
81142
81235
  }
81143
81236
  const TypedArray = scalarData.constructor;
81144
81237
  const imageScalarData = new TypedArray(voxelsPerImage);
81145
- const volumeBufferView = new TypedArray(volumeBuffer, byteOffset, voxelsPerImage);
81238
+ const volumeBufferView = new TypedArray(buffer, byteOffset, voxelsPerImage);
81146
81239
  imageScalarData.set(volumeBufferView);
81147
81240
  return imageScalarData;
81148
81241
  }
@@ -81169,7 +81262,7 @@ function _isCurrentImagePTPrescaled(modality, imageVolume) {
81169
81262
  /* harmony export */ g: () => (/* binding */ resetVolumeNewImageState)
81170
81263
  /* harmony export */ });
81171
81264
  /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(35678);
81172
- /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50002);
81265
+ /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(98362);
81173
81266
  /* harmony import */ var _getRenderingEngine__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49184);
81174
81267
  /* harmony import */ var _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6203);
81175
81268
 
@@ -81279,8 +81372,8 @@ function viewportTypeUsesCustomRenderingPipeline(viewportType) {
81279
81372
  var getOrCreateCanvas = __webpack_require__(45543);
81280
81373
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/init.js + 1 modules
81281
81374
  var init = __webpack_require__(71702);
81282
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 5 modules
81283
- var enums = __webpack_require__(50002);
81375
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
81376
+ var enums = __webpack_require__(98362);
81284
81377
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/RenderingEngine.js
81285
81378
 
81286
81379
 
@@ -81571,7 +81664,12 @@ class RenderingEngine {
81571
81664
  const prevCamera = vp.getCamera();
81572
81665
  const rotation = vp.getRotation();
81573
81666
  const { flipHorizontal } = prevCamera;
81574
- vp.resetCamera();
81667
+ const resetPan = true;
81668
+ const resetZoom = true;
81669
+ const resetToCenter = true;
81670
+ const resetRotation = false;
81671
+ const supressEvents = true;
81672
+ vp.resetCamera(resetPan, resetZoom, resetToCenter, resetRotation, supressEvents);
81575
81673
  const displayArea = vp.getDisplayArea();
81576
81674
  if (keepCamera) {
81577
81675
  if (displayArea) {
@@ -88245,7 +88343,7 @@ class Cache {
88245
88343
  this._imageCacheSize = 0;
88246
88344
  this._volumeCacheSize = 0;
88247
88345
  this._maxCacheSize = 3 * ONE_GB;
88248
- this._maxInstanceSize = 2 * ONE_GB - 8;
88346
+ this._maxInstanceSize = 4 * ONE_GB - 8;
88249
88347
  this.setMaxCacheSize = (newMaxCacheSize) => {
88250
88348
  if (!newMaxCacheSize || typeof newMaxCacheSize !== 'number') {
88251
88349
  const errorMessage = `New max cacheSize ${this._maxCacheSize} should be defined and should be a number.`;
@@ -91114,6 +91212,23 @@ const presets = [
91114
91212
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (presets);
91115
91213
 
91116
91214
 
91215
+ /***/ }),
91216
+
91217
+ /***/ 99842:
91218
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
91219
+
91220
+ "use strict";
91221
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
91222
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
91223
+ /* harmony export */ });
91224
+ var ContourType;
91225
+ (function (ContourType) {
91226
+ ContourType["CLOSED_PLANAR"] = "CLOSED_PLANAR";
91227
+ ContourType["OPEN_PLANAR"] = "OPEN_PLANAR";
91228
+ })(ContourType || (ContourType = {}));
91229
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ContourType);
91230
+
91231
+
91117
91232
  /***/ }),
91118
91233
 
91119
91234
  /***/ 11731:
@@ -91370,7 +91485,7 @@ var ViewportType;
91370
91485
 
91371
91486
  /***/ }),
91372
91487
 
91373
- /***/ 50002:
91488
+ /***/ 98362:
91374
91489
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
91375
91490
 
91376
91491
  "use strict";
@@ -91381,7 +91496,7 @@ __webpack_require__.r(__webpack_exports__);
91381
91496
  __webpack_require__.d(__webpack_exports__, {
91382
91497
  BlendModes: () => (/* reexport */ enums_BlendModes),
91383
91498
  CalibrationTypes: () => (/* reexport */ enums_CalibrationTypes),
91384
- ContourType: () => (/* reexport */ enums_ContourType),
91499
+ ContourType: () => (/* reexport */ ContourType/* default */.A),
91385
91500
  DynamicOperatorType: () => (/* reexport */ enums_DynamicOperatorType),
91386
91501
  Events: () => (/* reexport */ Events/* default */.A),
91387
91502
  GeometryType: () => (/* reexport */ enums_GeometryType),
@@ -91431,14 +91546,8 @@ var GeometryType;
91431
91546
  })(GeometryType || (GeometryType = {}));
91432
91547
  /* harmony default export */ const enums_GeometryType = (GeometryType);
91433
91548
 
91434
- ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ContourType.js
91435
- var ContourType;
91436
- (function (ContourType) {
91437
- ContourType["CLOSED_PLANAR"] = "CLOSED_PLANAR";
91438
- ContourType["OPEN_PLANAR"] = "OPEN_PLANAR";
91439
- })(ContourType || (ContourType = {}));
91440
- /* harmony default export */ const enums_ContourType = (ContourType);
91441
-
91549
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ContourType.js
91550
+ var ContourType = __webpack_require__(99842);
91442
91551
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/VOILUTFunctionType.js
91443
91552
  var VOILUTFunctionType = __webpack_require__(15381);
91444
91553
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/DynamicOperatorType.js
@@ -91724,8 +91833,8 @@ __webpack_require__.d(geometryLoader_namespaceObject, {
91724
91833
  createAndCacheGeometry: () => (createAndCacheGeometry)
91725
91834
  });
91726
91835
 
91727
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 5 modules
91728
- var enums = __webpack_require__(50002);
91836
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
91837
+ var enums = __webpack_require__(98362);
91729
91838
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/index.js + 2 modules
91730
91839
  var constants = __webpack_require__(88903);
91731
91840
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/index.js + 3 modules
@@ -96711,7 +96820,7 @@ function createContourSet(geometryId, contourSetData) {
96711
96820
  data: contourSetData.data,
96712
96821
  color: contourSetData.color,
96713
96822
  frameOfReferenceUID: contourSetData.frameOfReferenceUID,
96714
- segmentIndex: 1,
96823
+ segmentIndex: contourSetData.segmentIndex ?? 1,
96715
96824
  });
96716
96825
  const geometry = {
96717
96826
  id: geometryId,
@@ -96851,8 +96960,8 @@ __webpack_require__.d(__webpack_exports__, {
96851
96960
  ;// CONCATENATED MODULE: ../../../node_modules/detect-gpu/dist/detect-gpu.esm.js
96852
96961
  function e(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{d(n.next(e))}catch(e){a(e)}}function c(e){try{d(n.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,c)}d((n=n.apply(e,t||[])).next())}))}const t=["geforce 320m","geforce 8600","geforce 8600m gt","geforce 8800 gs","geforce 8800 gt","geforce 9400","geforce 9400m g","geforce 9400m","geforce 9600m gt","geforce 9600m","geforce fx go5200","geforce gt 120","geforce gt 130","geforce gt 330m","geforce gtx 285","google swiftshader","intel g41","intel g45","intel gma 4500mhd","intel gma x3100","intel hd 3000","intel q45","legacy","mali-2","mali-3","mali-4","quadro fx 1500","quadro fx 4","quadro fx 5","radeon hd 2400","radeon hd 2600","radeon hd 4670","radeon hd 4850","radeon hd 4870","radeon hd 5670","radeon hd 5750","radeon hd 6290","radeon hd 6300","radeon hd 6310","radeon hd 6320","radeon hd 6490m","radeon hd 6630m","radeon hd 6750m","radeon hd 6770m","radeon hd 6970m","sgx 543","sgx543"];function r(e){return e=e.toLowerCase().replace(/^angle ?\((.+)\)*$/,"$1").replace(/\s(\d{1,2}gb|direct3d.+$)|\(r\)| \([^)]+\)$/g,"").replace(/(?:vulkan|opengl) \d+\.\d+(?:\.\d+)?(?: \((.*)\))?/,"$1")}const n="undefined"==typeof window,o=(()=>{if(n)return;const{userAgent:e,platform:t,maxTouchPoints:r}=window.navigator,o=/(iphone|ipod|ipad)/i.test(e),a="iPad"===t||"MacIntel"===t&&r>0&&!window.MSStream;return{isIpad:a,isMobile:/android/i.test(e)||o||a,isSafari12:/Version\/12.+Safari/.test(e)}})();function a(e,t,r){if(!r)return[t];const n=function(e){const t="\n precision highp float;\n attribute vec3 aPosition;\n varying float vvv;\n void main() {\n vvv = 0.31622776601683794;\n gl_Position = vec4(aPosition, 1.0);\n }\n ",r="\n precision highp float;\n varying float vvv;\n void main() {\n vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * vvv;\n enc = fract(enc);\n enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n gl_FragColor = enc;\n }\n ",n=e.createShader(35633),o=e.createShader(35632),a=e.createProgram();if(!(o&&n&&a))return;e.shaderSource(n,t),e.shaderSource(o,r),e.compileShader(n),e.compileShader(o),e.attachShader(a,n),e.attachShader(a,o),e.linkProgram(a),e.detachShader(a,n),e.detachShader(a,o),e.deleteShader(n),e.deleteShader(o),e.useProgram(a);const i=e.createBuffer();e.bindBuffer(34962,i),e.bufferData(34962,new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),35044);const c=e.getAttribLocation(a,"aPosition");e.vertexAttribPointer(c,3,5126,!1,0,0),e.enableVertexAttribArray(c),e.clearColor(1,1,1,1),e.clear(16384),e.viewport(0,0,1,1),e.drawArrays(4,0,3);const d=new Uint8Array(4);return e.readPixels(0,0,1,1,6408,5121,d),e.deleteProgram(a),e.deleteBuffer(i),d.join("")}(e),a="801621810",i="8016218135",c="80162181161",d=(null==o?void 0:o.isIpad)?[["a7",c,12],["a8",i,15],["a8x",i,15],["a9",i,15],["a9x",i,15],["a10",i,15],["a10x",i,15],["a12",a,15],["a12x",a,15],["a12z",a,15],["a14",a,15],["m1",a,15]]:[["a7",c,12],["a8",i,12],["a9",i,15],["a10",i,15],["a11",a,15],["a12",a,15],["a13",a,15],["a14",a,15]];let l;"80162181255"===n?l=d.filter((([,,e])=>e>=14)):(l=d.filter((([,e])=>e===n)),l.length||(l=d));return l.map((([e])=>`apple ${e} gpu`))}const i=[],c=[];function d(e,t){if(e===t)return 0;const r=e;e.length>t.length&&(e=t,t=r);let n=e.length,o=t.length;for(;n>0&&e.charCodeAt(~-n)===t.charCodeAt(~-o);)n--,o--;let a,d=0;for(;d<n&&e.charCodeAt(d)===t.charCodeAt(d);)d++;if(n-=d,o-=d,0===n)return o;let l,s,f=0,u=0,h=0;for(;u<n;)c[u]=e.charCodeAt(d+u),i[u]=++u;for(;h<o;)for(a=t.charCodeAt(d+h),l=h++,f=h,u=0;u<n;u++)s=a===c[u]?l:l+1,l=i[u],f=i[u]=l>f?s>f?f+1:s:s>l?l+1:s;return f}function l(e){return null!=e}class s extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype)}}const f=({mobileTiers:i=[0,15,30,60],desktopTiers:c=[0,15,30,60],override:f={},glContext:u,failIfMajorPerformanceCaveat:h=!1,benchmarksURL:g="https://unpkg.com/detect-gpu@4.0.50/dist/benchmarks"}={})=>e(void 0,void 0,void 0,(function*(){const p={};if(n)return{tier:0,type:"SSR"};const{isIpad:m=!!(null==o?void 0:o.isIpad),isMobile:v=!!(null==o?void 0:o.isMobile),screenSize:w=window.screen,loadBenchmarks:x=(t=>e(void 0,void 0,void 0,(function*(){const e=yield fetch(`${g}/${t}`).then((e=>e.json()));if(parseInt(e.shift().split(".")[0],10)<4)throw new s("Detect GPU benchmark data is out of date. Please update to version 4x");return e})))}=f;let{renderer:A}=f;const P=(e,t,r,n,o)=>({device:o,fps:n,gpu:r,isMobile:v,tier:e,type:t});let b,S="";if(A)A=r(A),b=[A];else{const e=u||function(e,t=!1){const r={alpha:!1,antialias:!1,depth:!1,failIfMajorPerformanceCaveat:t,powerPreference:"high-performance",stencil:!1};e&&delete r.powerPreference;const n=window.document.createElement("canvas"),o=n.getContext("webgl",r)||n.getContext("experimental-webgl",r);return null!=o?o:void 0}(null==o?void 0:o.isSafari12,h);if(!e)return P(0,"WEBGL_UNSUPPORTED");const t=e.getExtension("WEBGL_debug_renderer_info");if(t&&(A=e.getParameter(t.UNMASKED_RENDERER_WEBGL)),!A)return P(1,"FALLBACK");S=A,A=r(A),b=function(e,t,r){return"apple gpu"===t?a(e,t,r):[t]}(e,A,v)}const y=(yield Promise.all(b.map((function(t){var r;return e(this,void 0,void 0,(function*(){const e=(e=>{const t=v?["adreno","apple","mali-t","mali","nvidia","powervr"]:["intel","apple","amd","radeon","nvidia","geforce"];for(const r of t)if(e.includes(r))return r})(t);if(!e)return;const n=`${v?"m":"d"}-${e}${m?"-ipad":""}.json`,o=p[n]=null!==(r=p[n])&&void 0!==r?r:x(n);let a;try{a=yield o}catch(e){if(e instanceof s)throw e;return}const i=function(e){var t;const r=(e=e.replace(/\([^)]+\)/,"")).match(/\d+/)||e.match(/(\W|^)([A-Za-z]{1,3})(\W|$)/g);return null!==(t=null==r?void 0:r.join("").replace(/\W|amd/g,""))&&void 0!==t?t:""}(t);let c=a.filter((([,e])=>e===i));c.length||(c=a.filter((([e])=>e.includes(t))));const l=c.length;if(0===l)return;let f,[u,,,h]=l>1?c.map((e=>[e,d(t,e[0])])).sort((([,e],[,t])=>e-t))[0][0]:c[0],g=Number.MAX_VALUE;const{devicePixelRatio:A}=window,P=w.width*A*w.height*A;for(const e of h){const[t,r]=e,n=t*r,o=Math.abs(P-n);o<g&&(g=o,f=e)}if(!f)return;const[,,b,S]=f;return[g,b,u,S]}))})))).filter(l).sort((([e=Number.MAX_VALUE,t],[r=Number.MAX_VALUE,n])=>e===r?t-n:e-r));if(!y.length){const e=t.find((e=>A.includes(e)));return e?P(0,"BLOCKLISTED",e):P(1,"FALLBACK",`${A} (${S})`)}const[,C,E,L]=y[0];if(-1===C)return P(0,"BLOCKLISTED",E,C,L);const M=v?i:c;let $=0;for(let e=0;e<M.length;e++)C>=M[e]&&($=e);return P($,"BENCHMARK",E,C,L)}));
96853
96962
 
96854
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 5 modules
96855
- var enums = __webpack_require__(50002);
96963
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
96964
+ var enums = __webpack_require__(98362);
96856
96965
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/getRenderingEngine.js
96857
96966
  var getRenderingEngine = __webpack_require__(49184);
96858
96967
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 70 modules
@@ -97096,8 +97205,8 @@ const sequentialRetrieveStages = [
97096
97205
  ];
97097
97206
  /* harmony default export */ const sequentialRetrieve = (sequentialRetrieveStages);
97098
97207
 
97099
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 5 modules
97100
- var enums = __webpack_require__(50002);
97208
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
97209
+ var enums = __webpack_require__(98362);
97101
97210
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/configuration/interleavedRetrieve.js
97102
97211
 
97103
97212
  const nearbyFrames = [
@@ -97578,12 +97687,24 @@ function createAndCacheDerivedImage(referencedImageId, options = {}, preventCach
97578
97687
  const { TypedArrayConstructor } = (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.getBufferConfiguration)(options.targetBufferType, length);
97579
97688
  const imageScalarData = new TypedArrayConstructor(skipCreateBuffer ? 1 : length);
97580
97689
  const derivedImageId = imageId;
97581
- ['imagePixelModule', 'imagePlaneModule', 'generalSeriesModule'].forEach((type) => {
97690
+ ['imagePlaneModule', 'generalSeriesModule'].forEach((type) => {
97582
97691
  _utilities__WEBPACK_IMPORTED_MODULE_4__.genericMetadataProvider.add(derivedImageId, {
97583
97692
  type,
97584
97693
  metadata: ___WEBPACK_IMPORTED_MODULE_6__.metaData.get(type, referencedImageId),
97585
97694
  });
97586
97695
  });
97696
+ const imagePixelModule = ___WEBPACK_IMPORTED_MODULE_6__.metaData.get('imagePixelModule', referencedImageId);
97697
+ _utilities__WEBPACK_IMPORTED_MODULE_4__.genericMetadataProvider.add(derivedImageId, {
97698
+ type: 'imagePixelModule',
97699
+ metadata: {
97700
+ ...imagePixelModule,
97701
+ bitsAllocated: 8,
97702
+ bitsStored: 8,
97703
+ highBit: 7,
97704
+ samplesPerPixel: 1,
97705
+ pixelRepresentation: 0,
97706
+ },
97707
+ });
97587
97708
  const localImage = createAndCacheLocalImage({ scalarData: imageScalarData, onCacheAdd, skipCreateBuffer }, imageId, true);
97588
97709
  const imageLoadObject = {
97589
97710
  promise: Promise.resolve(localImage),
@@ -98046,9 +98167,23 @@ function generateVolumeScalarData(targetBuffer, scalarLength) {
98046
98167
  throw new Error(_enums_Events__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A.CACHE_SIZE_EXCEEDED);
98047
98168
  }
98048
98169
  let volumeScalarData;
98049
- if (targetBuffer?.sharedArrayBuffer) {
98050
- const buffer = new SharedArrayBuffer(numBytes);
98051
- volumeScalarData = new TypedArrayConstructor(buffer);
98170
+ if (targetBuffer?.sharedArrayBuffer ?? (0,_init__WEBPACK_IMPORTED_MODULE_10__/* .getShouldUseSharedArrayBuffer */ .TB)()) {
98171
+ switch (targetBuffer.type) {
98172
+ case 'Float32Array':
98173
+ volumeScalarData = (0,_utilities__WEBPACK_IMPORTED_MODULE_9__.createFloat32SharedArray)(scalarLength);
98174
+ break;
98175
+ case 'Uint8Array':
98176
+ volumeScalarData = (0,_utilities__WEBPACK_IMPORTED_MODULE_9__.createUint8SharedArray)(scalarLength);
98177
+ break;
98178
+ case 'Uint16Array':
98179
+ volumeScalarData = (0,_utilities__WEBPACK_IMPORTED_MODULE_9__.createUint16SharedArray)(scalarLength);
98180
+ break;
98181
+ case 'Int16Array':
98182
+ volumeScalarData = (0,_utilities__WEBPACK_IMPORTED_MODULE_9__.createUint16SharedArray)(scalarLength);
98183
+ break;
98184
+ default:
98185
+ throw new Error('generateVolumeScalarData: SharedArrayBuffer is not supported for the specified target buffer type');
98186
+ }
98052
98187
  }
98053
98188
  else {
98054
98189
  volumeScalarData = new TypedArrayConstructor(scalarLength);
@@ -98327,7 +98462,7 @@ __webpack_require__.r(__webpack_exports__);
98327
98462
  /* harmony export */ setupCacheOptimizationEventListener: () => (/* binding */ setupCacheOptimizationEventListener)
98328
98463
  /* harmony export */ });
98329
98464
  /* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13320);
98330
- /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50002);
98465
+ /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(98362);
98331
98466
  /* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(51884);
98332
98467
  /* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(71702);
98333
98468
 
@@ -98449,7 +98584,7 @@ function findMatchingColormap(rgbPoints, actor) {
98449
98584
  return false;
98450
98585
  }
98451
98586
  for (let i = 0; i < presetRGBPoints.length; i += 4) {
98452
- if (!(0,_isEqual__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(presetRGBPoints.slice(i + 1, i + 4), rgbPoints.slice(i + 1, i + 4))) {
98587
+ if (!(0,_isEqual__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Ay)(presetRGBPoints.slice(i + 1, i + 4), rgbPoints.slice(i + 1, i + 4))) {
98453
98588
  return false;
98454
98589
  }
98455
98590
  }
@@ -98478,6 +98613,7 @@ function findMatchingColormap(rgbPoints, actor) {
98478
98613
  }
98479
98614
  return {
98480
98615
  name: matchedColormap.Name,
98616
+ opacity,
98481
98617
  };
98482
98618
  }
98483
98619
 
@@ -98812,6 +98948,7 @@ __webpack_require__.r(__webpack_exports__);
98812
98948
  __webpack_require__.d(__webpack_exports__, {
98813
98949
  PointsManager: () => (/* reexport */ PointsManager),
98814
98950
  ProgressiveIterator: () => (/* reexport */ ProgressiveIterator),
98951
+ RLEVoxelMap: () => (/* reexport */ RLEVoxelMap),
98815
98952
  VoxelManager: () => (/* reexport */ VoxelManager),
98816
98953
  actorIsA: () => (/* reexport */ actorCheck/* actorIsA */.N),
98817
98954
  applyPreset: () => (/* reexport */ applyPreset),
@@ -98867,7 +99004,9 @@ __webpack_require__.d(__webpack_exports__, {
98867
99004
  imageToWorldCoords: () => (/* reexport */ imageToWorldCoords),
98868
99005
  indexWithinDimensions: () => (/* reexport */ indexWithinDimensions),
98869
99006
  invertRgbTransferFunction: () => (/* reexport */ invertRgbTransferFunction),
98870
- isEqual: () => (/* reexport */ isEqual/* default */.A),
99007
+ isEqual: () => (/* reexport */ isEqual/* isEqual */.n4),
99008
+ isEqualAbs: () => (/* reexport */ isEqual/* isEqualAbs */.Ph),
99009
+ isEqualNegative: () => (/* reexport */ isEqual/* isEqualNegative */.WC),
98871
99010
  isImageActor: () => (/* reexport */ actorCheck/* isImageActor */.e),
98872
99011
  isOpposite: () => (/* reexport */ isOpposite),
98873
99012
  isPTPrescaledWithSUV: () => (/* reexport */ utilities_isPTPrescaledWithSUV),
@@ -99298,6 +99437,9 @@ function createUint8SharedArray(length) {
99298
99437
 
99299
99438
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/createFloat32SharedArray.js
99300
99439
 
99440
+ const SMALL_MEMORY_LIMIT = 2 * 1024 * 1024 * 1024 - 2;
99441
+ const BIG_MEMORY_LIMIT = SMALL_MEMORY_LIMIT * 2;
99442
+ const PAGE_SIZE = 65536;
99301
99443
  function createFloat32SharedArray(length) {
99302
99444
  if (!(0,init/* getShouldUseSharedArrayBuffer */.TB)()) {
99303
99445
  throw new Error('Your page is NOT cross-origin isolated, see https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated');
@@ -99305,8 +99447,20 @@ function createFloat32SharedArray(length) {
99305
99447
  if (window.SharedArrayBuffer === undefined) {
99306
99448
  throw new Error('SharedArrayBuffer is NOT supported in your browser see https://developer.chrome.com/blog/enabling-shared-array-buffer/');
99307
99449
  }
99308
- const sharedArrayBuffer = new SharedArrayBuffer(length * 4);
99309
- return new Float32Array(sharedArrayBuffer);
99450
+ const byteLength = length * 4;
99451
+ if (byteLength < SMALL_MEMORY_LIMIT) {
99452
+ const sharedArrayBuffer = new SharedArrayBuffer(byteLength);
99453
+ return new Float32Array(sharedArrayBuffer);
99454
+ }
99455
+ else if (byteLength < BIG_MEMORY_LIMIT) {
99456
+ const pages = Math.ceil(byteLength / PAGE_SIZE);
99457
+ const memory = new WebAssembly.Memory({
99458
+ initial: pages,
99459
+ maximum: pages,
99460
+ shared: true,
99461
+ });
99462
+ return new Float32Array(memory.buffer, 0, length);
99463
+ }
99310
99464
  }
99311
99465
  /* harmony default export */ const utilities_createFloat32SharedArray = (createFloat32SharedArray);
99312
99466
 
@@ -99474,8 +99628,8 @@ function transformIndexToWorld(imageData, voxelPos) {
99474
99628
 
99475
99629
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/imageLoader.js
99476
99630
  var imageLoader = __webpack_require__(79220);
99477
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 5 modules
99478
- var enums = __webpack_require__(50002);
99631
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
99632
+ var enums = __webpack_require__(98362);
99479
99633
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/requestPool/imageLoadPoolManager.js
99480
99634
  var imageLoadPoolManager = __webpack_require__(775);
99481
99635
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/getOrCreateCanvas.js
@@ -99494,23 +99648,28 @@ const isPTPrescaledWithSUV = (image) => {
99494
99648
 
99495
99649
 
99496
99650
 
99497
- function renderToCanvasGPU(canvas, image, modality = undefined, renderingEngineId = '_thumbnails', viewportOptions = { displayArea: { imageArea: [1, 1] } }) {
99651
+ function renderToCanvasGPU(canvas, imageOrVolume, modality = undefined, renderingEngineId = '_thumbnails', viewportOptions = {
99652
+ displayArea: { imageArea: [1, 1] },
99653
+ }) {
99498
99654
  if (!canvas || !(canvas instanceof HTMLCanvasElement)) {
99499
99655
  throw new Error('canvas element is required');
99500
99656
  }
99501
- const imageIdToPrint = image.imageId;
99657
+ const isVolume = !imageOrVolume.imageId;
99658
+ const image = !isVolume && imageOrVolume;
99659
+ const volume = isVolume && imageOrVolume;
99660
+ const imageIdToPrint = image?.imageId || volume?.volumeId;
99502
99661
  const viewportId = `renderGPUViewport-${imageIdToPrint}`;
99503
- const imageId = image.imageId;
99504
99662
  const element = document.createElement('div');
99505
99663
  const devicePixelRatio = window.devicePixelRatio || 1;
99664
+ if (!viewportOptions.displayArea) {
99665
+ viewportOptions.displayArea = { imageArea: [1, 1] };
99666
+ }
99506
99667
  const originalWidth = canvas.width;
99507
99668
  const originalHeight = canvas.height;
99508
- element.style.width = `${originalWidth + getOrCreateCanvas/* EPSILON */.p8}px`;
99509
- element.style.height = `${originalHeight + getOrCreateCanvas/* EPSILON */.p8}px`;
99669
+ element.style.width = `${originalWidth / devicePixelRatio + getOrCreateCanvas/* EPSILON */.p8}px`;
99670
+ element.style.height = `${originalHeight / devicePixelRatio + getOrCreateCanvas/* EPSILON */.p8}px`;
99510
99671
  element.style.visibility = 'hidden';
99511
99672
  element.style.position = 'absolute';
99512
- canvas.width = originalWidth * devicePixelRatio;
99513
- canvas.height = originalHeight * devicePixelRatio;
99514
99673
  document.body.appendChild(element);
99515
99674
  const uniqueId = viewportId.split(':').join('-');
99516
99675
  element.setAttribute('viewport-id-for-remove', uniqueId);
@@ -99519,26 +99678,44 @@ function renderToCanvasGPU(canvas, image, modality = undefined, renderingEngineI
99519
99678
  new RenderingEngine/* default */.Ay(renderingEngineId);
99520
99679
  let viewport = renderingEngine.getViewport(viewportId);
99521
99680
  if (!viewport) {
99522
- const stackViewportInput = {
99681
+ const viewportInput = {
99523
99682
  viewportId,
99524
- type: enums.ViewportType.STACK,
99683
+ type: isVolume ? enums.ViewportType.ORTHOGRAPHIC : enums.ViewportType.STACK,
99525
99684
  element,
99526
99685
  defaultOptions: {
99527
99686
  ...viewportOptions,
99528
99687
  suppressEvents: true,
99529
99688
  },
99530
99689
  };
99531
- renderingEngine.enableElement(stackViewportInput);
99690
+ renderingEngine.enableElement(viewportInput);
99532
99691
  viewport = renderingEngine.getViewport(viewportId);
99533
99692
  }
99534
99693
  return new Promise((resolve) => {
99535
99694
  let elementRendered = false;
99695
+ let { viewReference } = viewportOptions;
99536
99696
  const onImageRendered = (eventDetail) => {
99537
99697
  if (elementRendered) {
99538
99698
  return;
99539
99699
  }
99700
+ if (viewReference) {
99701
+ const useViewRef = viewReference;
99702
+ viewReference = null;
99703
+ viewport.setViewReference(useViewRef);
99704
+ viewport.render();
99705
+ return;
99706
+ }
99540
99707
  const context = canvas.getContext('2d');
99541
99708
  context.drawImage(temporaryCanvas, 0, 0, temporaryCanvas.width, temporaryCanvas.height, 0, 0, canvas.width, canvas.height);
99709
+ const origin = viewport.canvasToWorld([0, 0]);
99710
+ const topRight = viewport.canvasToWorld([
99711
+ temporaryCanvas.width / devicePixelRatio,
99712
+ 0,
99713
+ ]);
99714
+ const bottomLeft = viewport.canvasToWorld([
99715
+ 0,
99716
+ temporaryCanvas.height / devicePixelRatio,
99717
+ ]);
99718
+ const thicknessMm = 1;
99542
99719
  elementRendered = true;
99543
99720
  element.removeEventListener(enums.Events.IMAGE_RENDERED, onImageRendered);
99544
99721
  setTimeout(() => {
@@ -99548,10 +99725,20 @@ function renderToCanvasGPU(canvas, image, modality = undefined, renderingEngineI
99548
99725
  element.remove();
99549
99726
  });
99550
99727
  }, 0);
99551
- resolve(imageId);
99728
+ resolve({
99729
+ origin,
99730
+ bottomLeft,
99731
+ topRight,
99732
+ thicknessMm,
99733
+ });
99552
99734
  };
99553
99735
  element.addEventListener(enums.Events.IMAGE_RENDERED, onImageRendered);
99554
- viewport.renderImageObject(image);
99736
+ if (isVolume) {
99737
+ viewport.setVolumes([volume], false, true);
99738
+ }
99739
+ else {
99740
+ viewport.renderImageObject(imageOrVolume);
99741
+ }
99555
99742
  viewport.resetCamera();
99556
99743
  if (modality === 'PT' && !utilities_isPTPrescaledWithSUV(image)) {
99557
99744
  viewport.setProperties({
@@ -99575,7 +99762,12 @@ var drawImageSync = __webpack_require__(49892);
99575
99762
 
99576
99763
 
99577
99764
 
99578
- function renderToCanvasCPU(canvas, image, modality, _renderingEngineId, _viewportOptions) {
99765
+ function renderToCanvasCPU(canvas, imageOrVolume, modality, _renderingEngineId, _viewportOptions) {
99766
+ const volume = imageOrVolume;
99767
+ if (volume.volumeId) {
99768
+ throw new Error('Unsupported volume rendering for CPU');
99769
+ }
99770
+ const image = imageOrVolume;
99579
99771
  const viewport = (0,getDefaultViewport/* default */.A)(canvas, image, modality);
99580
99772
  const enabledElement = {
99581
99773
  canvas,
@@ -99587,7 +99779,7 @@ function renderToCanvasCPU(canvas, image, modality, _renderingEngineId, _viewpor
99587
99779
  const invalidated = true;
99588
99780
  return new Promise((resolve, reject) => {
99589
99781
  (0,drawImageSync/* default */.A)(enabledElement, invalidated);
99590
- resolve(image.imageId);
99782
+ resolve(null);
99591
99783
  });
99592
99784
  }
99593
99785
 
@@ -99599,28 +99791,36 @@ function renderToCanvasCPU(canvas, image, modality, _renderingEngineId, _viewpor
99599
99791
 
99600
99792
 
99601
99793
 
99794
+
99602
99795
  function loadImageToCanvas(options) {
99603
- const { canvas, imageId, requestType = enums.RequestType.Thumbnail, priority = -5, renderingEngineId = '_thumbnails', useCPURendering = false, thumbnail = false, imageAspect = false, physicalPixels = false, viewportOptions, } = options;
99604
- const devicePixelRatio = window.devicePixelRatio || 1;
99796
+ const { canvas, imageId, viewReference, requestType = enums.RequestType.Thumbnail, priority = -5, renderingEngineId = '_thumbnails', useCPURendering = false, thumbnail = false, imageAspect = false, viewportOptions: baseViewportOptions, } = options;
99797
+ const volumeId = viewReference?.volumeId;
99798
+ const isVolume = volumeId && !imageId;
99799
+ const viewportOptions = viewReference && baseViewportOptions
99800
+ ? { ...baseViewportOptions, viewReference }
99801
+ : baseViewportOptions;
99605
99802
  const renderFn = useCPURendering ? renderToCanvasCPU : renderToCanvasGPU;
99606
99803
  return new Promise((resolve, reject) => {
99607
- function successCallback(image, imageId) {
99804
+ function successCallback(imageOrVolume, imageId) {
99608
99805
  const { modality } = metaData.get('generalSeriesModule', imageId) || {};
99609
- image.isPreScaled = image.isPreScaled || image.preScale?.scaled;
99806
+ const image = !isVolume && imageOrVolume;
99807
+ const volume = isVolume && imageOrVolume;
99808
+ if (image) {
99809
+ image.isPreScaled = image.isPreScaled || image.preScale?.scaled;
99810
+ }
99610
99811
  if (thumbnail) {
99611
99812
  canvas.height = 256;
99612
99813
  canvas.width = 256;
99613
99814
  }
99614
- if (physicalPixels) {
99615
- canvas.width = canvas.offsetWidth * devicePixelRatio;
99616
- canvas.height = canvas.offsetHeight * devicePixelRatio;
99815
+ if (imageAspect && image) {
99816
+ canvas.width = image && (canvas.height * image.width) / image.height;
99617
99817
  }
99618
- if (imageAspect) {
99619
- canvas.width = (canvas.height * image.width) / image.height;
99818
+ canvas.style.width = `${canvas.width / devicePixelRatio}px`;
99819
+ canvas.style.height = `${canvas.height / devicePixelRatio}px`;
99820
+ if (volume && useCPURendering) {
99821
+ reject(new Error('CPU rendering of volume not supported'));
99620
99822
  }
99621
- renderFn(canvas, image, modality, renderingEngineId, viewportOptions).then(() => {
99622
- resolve(imageId);
99623
- });
99823
+ renderFn(canvas, imageOrVolume, modality, renderingEngineId, viewportOptions).then(resolve);
99624
99824
  }
99625
99825
  function errorCallback(error, imageId) {
99626
99826
  console.error(error, imageId);
@@ -99633,20 +99833,28 @@ function loadImageToCanvas(options) {
99633
99833
  errorCallback.call(this, error, imageId);
99634
99834
  });
99635
99835
  }
99636
- const { useNorm16Texture, preferSizeOverAccuracy } = (0,init/* getConfiguration */.D0)().rendering;
99637
- const useNativeDataType = useNorm16Texture || preferSizeOverAccuracy;
99836
+ const { useNorm16Texture } = (0,init/* getConfiguration */.D0)().rendering;
99638
99837
  const options = {
99639
99838
  targetBuffer: {
99640
- type: useNativeDataType ? undefined : 'Float32Array',
99839
+ type: useNorm16Texture ? undefined : 'Float32Array',
99641
99840
  },
99642
99841
  preScale: {
99643
99842
  enabled: true,
99644
99843
  },
99645
- useNativeDataType,
99646
99844
  useRGBA: !!useCPURendering,
99647
99845
  requestType,
99648
99846
  };
99649
- imageLoadPoolManager/* default */.A.addRequest(sendRequest.bind(null, imageId, null, options), requestType, { imageId }, priority);
99847
+ if (volumeId) {
99848
+ const volume = cache/* default */.Ay.getVolume(volumeId);
99849
+ if (!volume) {
99850
+ reject(new Error(`Volume id ${volumeId} not found in cache`));
99851
+ }
99852
+ const useImageId = volume.imageIds[0];
99853
+ successCallback(volume, useImageId);
99854
+ }
99855
+ else {
99856
+ imageLoadPoolManager/* default */.A.addRequest(sendRequest.bind(null, imageId, null, options), requestType, { imageId }, priority);
99857
+ }
99650
99858
  });
99651
99859
  }
99652
99860
 
@@ -100414,8 +100622,8 @@ function getScalingParameters(imageId) {
100414
100622
  const generalSeriesModule = (0,metaData.get)('generalSeriesModule', imageId) || {};
100415
100623
  const { modality } = generalSeriesModule;
100416
100624
  const scalingParameters = {
100417
- rescaleSlope: modalityLutModule.rescaleSlope,
100418
- rescaleIntercept: modalityLutModule.rescaleIntercept,
100625
+ rescaleSlope: modalityLutModule.rescaleSlope || 1,
100626
+ rescaleIntercept: modalityLutModule.rescaleIntercept ?? 0,
100419
100627
  modality,
100420
100628
  };
100421
100629
  const suvFactor = (0,metaData.get)('scalingModule', imageId) || {};
@@ -100528,11 +100736,15 @@ function sortImageIdsAndGetSpacing(imageIds, scanAxisNormal) {
100528
100736
  Math.abs(distanceBetweenFirstAndMiddleImages) /
100529
100737
  Math.floor(imageIds.length / 2);
100530
100738
  }
100531
- const { imagePositionPatient: origin, sliceThickness } = dist_esm.metaData.get('imagePlaneModule', sortedImageIds[0]);
100739
+ const { imagePositionPatient: origin, sliceThickness, spacingBetweenSlices, } = dist_esm.metaData.get('imagePlaneModule', sortedImageIds[0]);
100532
100740
  const { strictZSpacingForVolumeViewport } = (0,dist_esm.getConfiguration)().rendering;
100533
100741
  if (zSpacing === 0 && !strictZSpacingForVolumeViewport) {
100534
- if (sliceThickness) {
100535
- console.log('Could not calculate zSpacing. Using sliceThickness');
100742
+ if (sliceThickness && spacingBetweenSlices) {
100743
+ console.log('Could not calculate zSpacing. Using spacingBetweenSlices');
100744
+ zSpacing = spacingBetweenSlices;
100745
+ }
100746
+ else if (sliceThickness) {
100747
+ console.log('Could not calculate zSpacing and no spacingBetweenSlices. Using sliceThickness');
100536
100748
  zSpacing = sliceThickness;
100537
100749
  }
100538
100750
  else {
@@ -100645,8 +100857,8 @@ function isValidVolume(imageIds) {
100645
100857
  modality === baseMetadata.modality &&
100646
100858
  columns === baseMetadata.columns &&
100647
100859
  rows === baseMetadata.rows &&
100648
- (0,isEqual/* default */.A)(imageOrientationPatient, baseMetadata.imageOrientationPatient) &&
100649
- (0,isEqual/* default */.A)(pixelSpacing, baseMetadata.pixelSpacing));
100860
+ (0,isEqual/* default */.Ay)(imageOrientationPatient, baseMetadata.imageOrientationPatient) &&
100861
+ (0,isEqual/* default */.Ay)(pixelSpacing, baseMetadata.pixelSpacing));
100650
100862
  });
100651
100863
  return validVolume;
100652
100864
  }
@@ -101090,9 +101302,11 @@ async function convertStackToVolumeViewport({ viewport, options, }) {
101090
101302
  },
101091
101303
  ], [viewportId]);
101092
101304
  const volumeViewportNewVolumeHandler = () => {
101093
- volumeViewport.setCamera({
101094
- ...prevCamera,
101095
- });
101305
+ if (!options.orientation) {
101306
+ volumeViewport.setCamera({
101307
+ ...prevCamera,
101308
+ });
101309
+ }
101096
101310
  volumeViewport.render();
101097
101311
  element.removeEventListener(enums.Events.VOLUME_VIEWPORT_NEW_VOLUME, volumeViewportNewVolumeHandler);
101098
101312
  };
@@ -101479,7 +101693,7 @@ class VoxelManager {
101479
101693
  return [scalarData[index++], scalarData[index++], scalarData[index++]];
101480
101694
  }, (index, v) => {
101481
101695
  index *= 3;
101482
- const isChanged = !(0,isEqual/* default */.A)(scalarData[index], v);
101696
+ const isChanged = !(0,isEqual/* default */.Ay)(scalarData[index], v);
101483
101697
  scalarData[index++] = v[0];
101484
101698
  scalarData[index++] = v[1];
101485
101699
  scalarData[index++] = v[2];
@@ -101833,6 +102047,7 @@ function hexToRgb(hex) {
101833
102047
 
101834
102048
 
101835
102049
 
102050
+
101836
102051
 
101837
102052
 
101838
102053
  /***/ }),
@@ -101842,7 +102057,10 @@ function hexToRgb(hex) {
101842
102057
 
101843
102058
  "use strict";
101844
102059
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
101845
- /* harmony export */ A: () => (/* binding */ isEqual)
102060
+ /* harmony export */ Ay: () => (/* binding */ isEqual),
102061
+ /* harmony export */ Ph: () => (/* binding */ isEqualAbs),
102062
+ /* harmony export */ WC: () => (/* binding */ isEqualNegative),
102063
+ /* harmony export */ n4: () => (/* binding */ isEqual)
101846
102064
  /* harmony export */ });
101847
102065
  function areNumbersEqualWithTolerance(num1, num2, tolerance) {
101848
102066
  return Math.abs(num1 - num2) <= tolerance;
@@ -101876,6 +102094,11 @@ function isEqual(v1, v2, tolerance = 1e-5) {
101876
102094
  }
101877
102095
  return false;
101878
102096
  }
102097
+ const negative = (v) => typeof v === 'number' ? -v : v?.map ? v.map(negative) : !v;
102098
+ const abs = (v) => typeof v === 'number' ? Math.abs(v) : v?.map ? v.map(abs) : v;
102099
+ const isEqualNegative = (v1, v2, tolerance = undefined) => isEqual(v1, negative(v2), tolerance);
102100
+ const isEqualAbs = (v1, v2, tolerance = undefined) => isEqual(abs(v1), abs(v2), tolerance);
102101
+
101879
102102
 
101880
102103
 
101881
102104
  /***/ }),
@@ -101960,7 +102183,7 @@ function triggerEvent(el = _eventTarget__WEBPACK_IMPORTED_MODULE_0__/* ["default
101960
102183
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
101961
102184
  /* harmony export */ });
101962
102185
  /* harmony import */ var comlink__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(99178);
101963
- /* harmony import */ var _enums___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50002);
102186
+ /* harmony import */ var _enums___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(98362);
101964
102187
  /* harmony import */ var _requestPool_requestPoolManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79927);
101965
102188
 
101966
102189
 
@@ -102115,7 +102338,7 @@ class CentralizedWorkerManager {
102115
102338
  /***/ 54578:
102116
102339
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
102117
102340
 
102118
- !function(e,t){ true?module.exports=t(__webpack_require__(92136),__webpack_require__(45561)):0}(this,((e,t)=>(()=>{"use strict";var r={578:(e,t,r)=>{const n=r(823),a=r(187),o=r(592),i=r(604),s=r(249),l=r(968),c=Object.prototype.toString,{Z_NO_FLUSH:u,Z_FINISH:f,Z_OK:d,Z_STREAM_END:m,Z_NEED_DICT:g,Z_STREAM_ERROR:p,Z_DATA_ERROR:h,Z_MEM_ERROR:x}=r(684);function b(e){this.options=a.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;let r=n.inflateInit2(this.strm,t.windowBits);if(r!==d)throw new Error(i[r]);if(this.header=new l,n.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=o.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=n.inflateSetDictionary(this.strm,t.dictionary),r!==d)))throw new Error(i[r])}function w(e,t){const r=new b(t);if(r.push(e),r.err)throw r.msg||i[r.err];return r.result}b.prototype.push=function(e,t){const r=this.strm,a=this.options.chunkSize,i=this.options.dictionary;let s,l,b;if(this.ended)return!1;for(l=t===~~t?t:!0===t?f:u,"[object ArrayBuffer]"===c.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(a),r.next_out=0,r.avail_out=a),s=n.inflate(r,l),s===g&&i&&(s=n.inflateSetDictionary(r,i),s===d?s=n.inflate(r,l):s===h&&(s=g));r.avail_in>0&&s===m&&r.state.wrap>0&&0!==e[r.next_in];)n.inflateReset(r),s=n.inflate(r,l);switch(s){case p:case h:case g:case x:return this.onEnd(s),this.ended=!0,!1}if(b=r.avail_out,r.next_out&&(0===r.avail_out||s===m))if("string"===this.options.to){let e=o.utf8border(r.output,r.next_out),t=r.next_out-e,n=o.buf2string(r.output,e);r.next_out=t,r.avail_out=a-t,t&&r.output.set(r.output.subarray(e,e+t),0),this.onData(n)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(s!==d||0!==b){if(s===m)return s=n.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},b.prototype.onData=function(e){this.chunks.push(e)},b.prototype.onEnd=function(e){e===d&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=a.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.exports.Hq=function(e,t){return(t=t||{}).raw=!0,w(e,t)},r(684)},187:e=>{const t=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);e.exports.assign=function(e){const r=Array.prototype.slice.call(arguments,1);for(;r.length;){const n=r.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const r in n)t(n,r)&&(e[r]=n[r])}}return e},e.exports.flattenChunks=e=>{let t=0;for(let r=0,n=e.length;r<n;r++)t+=e[r].length;const r=new Uint8Array(t);for(let t=0,n=0,a=e.length;t<a;t++){let a=e[t];r.set(a,n),n+=a.length}return r}},592:e=>{let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){t=!1}const r=new Uint8Array(256);for(let e=0;e<256;e++)r[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;r[254]=r[254]=1,e.exports.string2buf=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,r,n,a,o,i=e.length,s=0;for(a=0;a<i;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),s+=r<128?1:r<2048?2:r<65536?3:4;for(t=new Uint8Array(s),o=0,a=0;o<s;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),r<128?t[o++]=r:r<2048?(t[o++]=192|r>>>6,t[o++]=128|63&r):r<65536?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t};e.exports.buf2string=(e,n)=>{const a=n||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,n));let o,i;const s=new Array(2*a);for(i=0,o=0;o<a;){let t=e[o++];if(t<128){s[i++]=t;continue}let n=r[t];if(n>4)s[i++]=65533,o+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&o<a;)t=t<<6|63&e[o++],n--;n>1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,r)=>{if(r<65534&&e.subarray&&t)return String.fromCharCode.apply(null,e.length===r?e:e.subarray(0,r));let n="";for(let t=0;t<r;t++)n+=String.fromCharCode(e[t]);return n})(s,i)},e.exports.utf8border=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+r[e[n]]>t?n:t}},693:e=>{e.exports=(e,t,r,n)=>{let a=65535&e|0,o=e>>>16&65535|0,i=0;for(;0!==r;){i=r>2e3?2e3:r,r-=i;do{a=a+t[n++]|0,o=o+a|0}while(--i);a%=65521,o%=65521}return a|o<<16|0}},684:e=>{e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},863:e=>{const t=new Uint32Array((()=>{let e,t=[];for(var r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t})());e.exports=(e,r,n,a)=>{const o=t,i=a+n;e^=-1;for(let t=a;t<i;t++)e=e>>>8^o[255&(e^r[t])];return-1^e}},968:e=>{e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},365:e=>{const t=16209;e.exports=function(e,r){let n,a,o,i,s,l,c,u,f,d,m,g,p,h,x,b,w,y,k,T,D,S,I,P;const v=e.state;n=e.next_in,I=e.input,a=n+(e.avail_in-5),o=e.next_out,P=e.output,i=o-(r-e.avail_out),s=o+(e.avail_out-257),l=v.dmax,c=v.wsize,u=v.whave,f=v.wnext,d=v.window,m=v.hold,g=v.bits,p=v.lencode,h=v.distcode,x=(1<<v.lenbits)-1,b=(1<<v.distbits)-1;e:do{g<15&&(m+=I[n++]<<g,g+=8,m+=I[n++]<<g,g+=8),w=p[m&x];t:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,0===y)P[o++]=65535&w;else{if(!(16&y)){if(0==(64&y)){w=p[(65535&w)+(m&(1<<y)-1)];continue t}if(32&y){v.mode=16191;break e}e.msg="invalid literal/length code",v.mode=t;break e}k=65535&w,y&=15,y&&(g<y&&(m+=I[n++]<<g,g+=8),k+=m&(1<<y)-1,m>>>=y,g-=y),g<15&&(m+=I[n++]<<g,g+=8,m+=I[n++]<<g,g+=8),w=h[m&b];r:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,!(16&y)){if(0==(64&y)){w=h[(65535&w)+(m&(1<<y)-1)];continue r}e.msg="invalid distance code",v.mode=t;break e}if(T=65535&w,y&=15,g<y&&(m+=I[n++]<<g,g+=8,g<y&&(m+=I[n++]<<g,g+=8)),T+=m&(1<<y)-1,T>l){e.msg="invalid distance too far back",v.mode=t;break e}if(m>>>=y,g-=y,y=o-i,T>y){if(y=T-y,y>u&&v.sane){e.msg="invalid distance too far back",v.mode=t;break e}if(D=0,S=d,0===f){if(D+=c-y,y<k){k-=y;do{P[o++]=d[D++]}while(--y);D=o-T,S=P}}else if(f<y){if(D+=c+f-y,y-=f,y<k){k-=y;do{P[o++]=d[D++]}while(--y);if(D=0,f<k){y=f,k-=y;do{P[o++]=d[D++]}while(--y);D=o-T,S=P}}}else if(D+=f-y,y<k){k-=y;do{P[o++]=d[D++]}while(--y);D=o-T,S=P}for(;k>2;)P[o++]=S[D++],P[o++]=S[D++],P[o++]=S[D++],k-=3;k&&(P[o++]=S[D++],k>1&&(P[o++]=S[D++]))}else{D=o-T;do{P[o++]=P[D++],P[o++]=P[D++],P[o++]=P[D++],k-=3}while(k>2);k&&(P[o++]=P[D++],k>1&&(P[o++]=P[D++]))}break}}break}}while(n<a&&o<s);k=g>>3,n-=k,g-=k<<3,m&=(1<<g)-1,e.next_in=n,e.next_out=o,e.avail_in=n<a?a-n+5:5-(n-a),e.avail_out=o<s?s-o+257:257-(o-s),v.hold=m,v.bits=g}},823:(e,t,r)=>{const n=r(693),a=r(863),o=r(365),i=r(446),{Z_FINISH:s,Z_BLOCK:l,Z_TREES:c,Z_OK:u,Z_STREAM_END:f,Z_NEED_DICT:d,Z_STREAM_ERROR:m,Z_DATA_ERROR:g,Z_MEM_ERROR:p,Z_BUF_ERROR:h,Z_DEFLATED:x}=r(684),b=16180,w=16190,y=16191,k=16192,T=16194,D=16199,S=16200,I=16206,P=16209,v=16210,E=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function A(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const _=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<b||t.mode>16211?1:0},L=e=>{if(_(e))return m;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=b,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,u},C=e=>{if(_(e))return m;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,L(e)},O=(e,t)=>{let r;if(_(e))return m;const n=e.state;return t<0?(r=0,t=-t):(r=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?m:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,C(e))},R=(e,t)=>{if(!e)return m;const r=new A;e.state=r,r.strm=e,r.window=null,r.mode=b;const n=O(e,t);return n!==u&&(e.state=null),n};let M,F,U=!0;const B=e=>{if(U){M=new Int32Array(512),F=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(i(1,e.lens,0,288,M,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;i(2,e.lens,0,32,F,0,e.work,{bits:5}),U=!1}e.lencode=M,e.lenbits=9,e.distcode=F,e.distbits=5},N=(e,t,r,n)=>{let a;const o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new Uint8Array(o.wsize)),n>=o.wsize?(o.window.set(t.subarray(r-o.wsize,r),0),o.wnext=0,o.whave=o.wsize):(a=o.wsize-o.wnext,a>n&&(a=n),o.window.set(t.subarray(r-n,r-n+a),o.wnext),(n-=a)?(o.window.set(t.subarray(r-n,r),0),o.wnext=n,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=a))),0};e.exports.inflateReset=C,e.exports.inflateReset2=O,e.exports.inflateResetKeep=L,e.exports.inflateInit=e=>R(e,15),e.exports.inflateInit2=R,e.exports.inflate=(e,t)=>{let r,A,L,C,O,R,M,F,U,j,G,V,$,W,q,Z,Y,z,H,Q,X,K,J=0;const ee=new Uint8Array(4);let te,re;const ne=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(_(e)||!e.output||!e.input&&0!==e.avail_in)return m;r=e.state,r.mode===y&&(r.mode=k),O=e.next_out,L=e.output,M=e.avail_out,C=e.next_in,A=e.input,R=e.avail_in,F=r.hold,U=r.bits,j=R,G=M,K=u;e:for(;;)switch(r.mode){case b:if(0===r.wrap){r.mode=k;break}for(;U<16;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}if(2&r.wrap&&35615===F){0===r.wbits&&(r.wbits=15),r.check=0,ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0),F=0,U=0,r.mode=16181;break}if(r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&F)<<8)+(F>>8))%31){e.msg="incorrect header check",r.mode=P;break}if((15&F)!==x){e.msg="unknown compression method",r.mode=P;break}if(F>>>=4,U-=4,X=8+(15&F),0===r.wbits&&(r.wbits=X),X>15||X>r.wbits){e.msg="invalid window size",r.mode=P;break}r.dmax=1<<r.wbits,r.flags=0,e.adler=r.check=1,r.mode=512&F?16189:y,F=0,U=0;break;case 16181:for(;U<16;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}if(r.flags=F,(255&r.flags)!==x){e.msg="unknown compression method",r.mode=P;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=P;break}r.head&&(r.head.text=F>>8&1),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,U=0,r.mode=16182;case 16182:for(;U<32;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}r.head&&(r.head.time=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,ee[2]=F>>>16&255,ee[3]=F>>>24&255,r.check=a(r.check,ee,4,0)),F=0,U=0,r.mode=16183;case 16183:for(;U<16;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}r.head&&(r.head.xflags=255&F,r.head.os=F>>8),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,U=0,r.mode=16184;case 16184:if(1024&r.flags){for(;U<16;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}r.length=F,r.head&&(r.head.extra_len=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,U=0}else r.head&&(r.head.extra=null);r.mode=16185;case 16185:if(1024&r.flags&&(V=r.length,V>R&&(V=R),V&&(r.head&&(X=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(A.subarray(C,C+V),X)),512&r.flags&&4&r.wrap&&(r.check=a(r.check,A,V,C)),R-=V,C+=V,r.length-=V),r.length))break e;r.length=0,r.mode=16186;case 16186:if(2048&r.flags){if(0===R)break e;V=0;do{X=A[C+V++],r.head&&X&&r.length<65536&&(r.head.name+=String.fromCharCode(X))}while(X&&V<R);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,A,V,C)),R-=V,C+=V,X)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=16187;case 16187:if(4096&r.flags){if(0===R)break e;V=0;do{X=A[C+V++],r.head&&X&&r.length<65536&&(r.head.comment+=String.fromCharCode(X))}while(X&&V<R);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,A,V,C)),R-=V,C+=V,X)break e}else r.head&&(r.head.comment=null);r.mode=16188;case 16188:if(512&r.flags){for(;U<16;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}if(4&r.wrap&&F!==(65535&r.check)){e.msg="header crc mismatch",r.mode=P;break}F=0,U=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=y;break;case 16189:for(;U<32;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}e.adler=r.check=E(F),F=0,U=0,r.mode=w;case w:if(0===r.havedict)return e.next_out=O,e.avail_out=M,e.next_in=C,e.avail_in=R,r.hold=F,r.bits=U,d;e.adler=r.check=1,r.mode=y;case y:if(t===l||t===c)break e;case k:if(r.last){F>>>=7&U,U-=7&U,r.mode=I;break}for(;U<3;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}switch(r.last=1&F,F>>>=1,U-=1,3&F){case 0:r.mode=16193;break;case 1:if(B(r),r.mode=D,t===c){F>>>=2,U-=2;break e}break;case 2:r.mode=16196;break;case 3:e.msg="invalid block type",r.mode=P}F>>>=2,U-=2;break;case 16193:for(F>>>=7&U,U-=7&U;U<32;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}if((65535&F)!=(F>>>16^65535)){e.msg="invalid stored block lengths",r.mode=P;break}if(r.length=65535&F,F=0,U=0,r.mode=T,t===c)break e;case T:r.mode=16195;case 16195:if(V=r.length,V){if(V>R&&(V=R),V>M&&(V=M),0===V)break e;L.set(A.subarray(C,C+V),O),R-=V,C+=V,M-=V,O+=V,r.length-=V;break}r.mode=y;break;case 16196:for(;U<14;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}if(r.nlen=257+(31&F),F>>>=5,U-=5,r.ndist=1+(31&F),F>>>=5,U-=5,r.ncode=4+(15&F),F>>>=4,U-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=P;break}r.have=0,r.mode=16197;case 16197:for(;r.have<r.ncode;){for(;U<3;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}r.lens[ne[r.have++]]=7&F,F>>>=3,U-=3}for(;r.have<19;)r.lens[ne[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,te={bits:r.lenbits},K=i(0,r.lens,0,19,r.lencode,0,r.work,te),r.lenbits=te.bits,K){e.msg="invalid code lengths set",r.mode=P;break}r.have=0,r.mode=16198;case 16198:for(;r.have<r.nlen+r.ndist;){for(;J=r.lencode[F&(1<<r.lenbits)-1],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(q<=U);){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}if(Y<16)F>>>=q,U-=q,r.lens[r.have++]=Y;else{if(16===Y){for(re=q+2;U<re;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}if(F>>>=q,U-=q,0===r.have){e.msg="invalid bit length repeat",r.mode=P;break}X=r.lens[r.have-1],V=3+(3&F),F>>>=2,U-=2}else if(17===Y){for(re=q+3;U<re;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}F>>>=q,U-=q,X=0,V=3+(7&F),F>>>=3,U-=3}else{for(re=q+7;U<re;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}F>>>=q,U-=q,X=0,V=11+(127&F),F>>>=7,U-=7}if(r.have+V>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=P;break}for(;V--;)r.lens[r.have++]=X}}if(r.mode===P)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=P;break}if(r.lenbits=9,te={bits:r.lenbits},K=i(1,r.lens,0,r.nlen,r.lencode,0,r.work,te),r.lenbits=te.bits,K){e.msg="invalid literal/lengths set",r.mode=P;break}if(r.distbits=6,r.distcode=r.distdyn,te={bits:r.distbits},K=i(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,te),r.distbits=te.bits,K){e.msg="invalid distances set",r.mode=P;break}if(r.mode=D,t===c)break e;case D:r.mode=S;case S:if(R>=6&&M>=258){e.next_out=O,e.avail_out=M,e.next_in=C,e.avail_in=R,r.hold=F,r.bits=U,o(e,G),O=e.next_out,L=e.output,M=e.avail_out,C=e.next_in,A=e.input,R=e.avail_in,F=r.hold,U=r.bits,r.mode===y&&(r.back=-1);break}for(r.back=0;J=r.lencode[F&(1<<r.lenbits)-1],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(q<=U);){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}if(Z&&0==(240&Z)){for(z=q,H=Z,Q=Y;J=r.lencode[Q+((F&(1<<z+H)-1)>>z)],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(z+q<=U);){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}F>>>=z,U-=z,r.back+=z}if(F>>>=q,U-=q,r.back+=q,r.length=Y,0===Z){r.mode=16205;break}if(32&Z){r.back=-1,r.mode=y;break}if(64&Z){e.msg="invalid literal/length code",r.mode=P;break}r.extra=15&Z,r.mode=16201;case 16201:if(r.extra){for(re=r.extra;U<re;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}r.length+=F&(1<<r.extra)-1,F>>>=r.extra,U-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=16202;case 16202:for(;J=r.distcode[F&(1<<r.distbits)-1],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(q<=U);){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}if(0==(240&Z)){for(z=q,H=Z,Q=Y;J=r.distcode[Q+((F&(1<<z+H)-1)>>z)],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(z+q<=U);){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}F>>>=z,U-=z,r.back+=z}if(F>>>=q,U-=q,r.back+=q,64&Z){e.msg="invalid distance code",r.mode=P;break}r.offset=Y,r.extra=15&Z,r.mode=16203;case 16203:if(r.extra){for(re=r.extra;U<re;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}r.offset+=F&(1<<r.extra)-1,F>>>=r.extra,U-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=P;break}r.mode=16204;case 16204:if(0===M)break e;if(V=G-M,r.offset>V){if(V=r.offset-V,V>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=P;break}V>r.wnext?(V-=r.wnext,$=r.wsize-V):$=r.wnext-V,V>r.length&&(V=r.length),W=r.window}else W=L,$=O-r.offset,V=r.length;V>M&&(V=M),M-=V,r.length-=V;do{L[O++]=W[$++]}while(--V);0===r.length&&(r.mode=S);break;case 16205:if(0===M)break e;L[O++]=r.length,M--,r.mode=S;break;case I:if(r.wrap){for(;U<32;){if(0===R)break e;R--,F|=A[C++]<<U,U+=8}if(G-=M,e.total_out+=G,r.total+=G,4&r.wrap&&G&&(e.adler=r.check=r.flags?a(r.check,L,G,O-G):n(r.check,L,G,O-G)),G=M,4&r.wrap&&(r.flags?F:E(F))!==r.check){e.msg="incorrect data check",r.mode=P;break}F=0,U=0}r.mode=16207;case 16207:if(r.wrap&&r.flags){for(;U<32;){if(0===R)break e;R--,F+=A[C++]<<U,U+=8}if(4&r.wrap&&F!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=P;break}F=0,U=0}r.mode=16208;case 16208:K=f;break e;case P:K=g;break e;case v:return p;default:return m}return e.next_out=O,e.avail_out=M,e.next_in=C,e.avail_in=R,r.hold=F,r.bits=U,(r.wsize||G!==e.avail_out&&r.mode<P&&(r.mode<I||t!==s))&&N(e,e.output,e.next_out,G-e.avail_out)?(r.mode=v,p):(j-=e.avail_in,G-=e.avail_out,e.total_in+=j,e.total_out+=G,r.total+=G,4&r.wrap&&G&&(e.adler=r.check=r.flags?a(r.check,L,G,e.next_out-G):n(r.check,L,G,e.next_out-G)),e.data_type=r.bits+(r.last?64:0)+(r.mode===y?128:0)+(r.mode===D||r.mode===T?256:0),(0===j&&0===G||t===s)&&K===u&&(K=h),K)},e.exports.inflateEnd=e=>{if(_(e))return m;let t=e.state;return t.window&&(t.window=null),e.state=null,u},e.exports.inflateGetHeader=(e,t)=>{if(_(e))return m;const r=e.state;return 0==(2&r.wrap)?m:(r.head=t,t.done=!1,u)},e.exports.inflateSetDictionary=(e,t)=>{const r=t.length;let a,o,i;return _(e)?m:(a=e.state,0!==a.wrap&&a.mode!==w?m:a.mode===w&&(o=1,o=n(o,t,r,0),o!==a.check)?g:(i=N(e,t,r,r),i?(a.mode=v,p):(a.havedict=1,u)))},e.exports.inflateInfo="pako inflate (from Nodeca project)"},446:e=>{const t=15,r=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),n=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),a=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),o=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);e.exports=(e,i,s,l,c,u,f,d)=>{const m=d.bits;let g,p,h,x,b,w,y=0,k=0,T=0,D=0,S=0,I=0,P=0,v=0,E=0,A=0,_=null;const L=new Uint16Array(16),C=new Uint16Array(16);let O,R,M,F=null;for(y=0;y<=t;y++)L[y]=0;for(k=0;k<l;k++)L[i[s+k]]++;for(S=m,D=t;D>=1&&0===L[D];D--);if(S>D&&(S=D),0===D)return c[u++]=20971520,c[u++]=20971520,d.bits=1,0;for(T=1;T<D&&0===L[T];T++);for(S<T&&(S=T),v=1,y=1;y<=t;y++)if(v<<=1,v-=L[y],v<0)return-1;if(v>0&&(0===e||1!==D))return-1;for(C[1]=0,y=1;y<t;y++)C[y+1]=C[y]+L[y];for(k=0;k<l;k++)0!==i[s+k]&&(f[C[i[s+k]]++]=k);if(0===e?(_=F=f,w=20):1===e?(_=r,F=n,w=257):(_=a,F=o,w=0),A=0,k=0,y=T,b=u,I=S,P=0,h=-1,E=1<<S,x=E-1,1===e&&E>852||2===e&&E>592)return 1;for(;;){O=y-P,f[k]+1<w?(R=0,M=f[k]):f[k]>=w?(R=F[f[k]-w],M=_[f[k]-w]):(R=96,M=0),g=1<<y-P,p=1<<I,T=p;do{p-=g,c[b+(A>>P)+p]=O<<24|R<<16|M|0}while(0!==p);for(g=1<<y-1;A&g;)g>>=1;if(0!==g?(A&=g-1,A+=g):A=0,k++,0==--L[y]){if(y===D)break;y=i[s+f[k]]}if(y>S&&(A&x)!==h){for(0===P&&(P=S),b+=T,I=y-P,v=1<<I;I+P<D&&(v-=L[I+P],!(v<=0));)I++,v<<=1;if(E+=1<<I,1===e&&E>852||2===e&&E>592)return 1;h=A&x,c[h]=S<<24|I<<16|b-u|0}}return 0!==A&&(c[b+A]=y-P<<24|64<<16|0),d.bits=S,0}},604:e=>{e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},249:e=>{e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},464:t=>{t.exports=e},713:e=>{e.exports=t}},n={};function a(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,a),o.exports}a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})();var o={};return(()=>{function e(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: rgbBuffer length must be divisible by 3");const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++)t[o++]=e[a++],t[o++]=e[a++],t[o++]=e[a++],t[o++]=255;else t.set(e)}function t(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: rgbBuffer length must be divisible by 3");const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++],t[a++]=255;else for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++]}function r(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128),t[o++]=255}else for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128)}}function n(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128),t[a++]=255}else for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128)}}a.r(o),a.d(o,{configure:()=>kt,convertColorSpace:()=>X,convertPALETTECOLOR:()=>yt,convertRGBColorByPixel:()=>e,convertRGBColorByPlane:()=>t,convertYBRFullByPixel:()=>r,convertYBRFullByPlane:()=>n,createImage:()=>ke,decodeImageFrame:()=>pe,decodeJPEGBaseline8BitColor:()=>J,default:()=>Dt,external:()=>bt,getImageFrame:()=>he,getMinMax:()=>H,getPixelData:()=>z,internal:()=>B,isColorImage:()=>xe,isJPEGBaseline8BitColor:()=>Tt,wadors:()=>Ee,wadouri:()=>mt,webWorkerManager:()=>de});const i=function(e,t,r){return t=t||0,e&&e.Value?e.Value.length<=t?r:e.Value[t]:r};const s=function(e,t,r){const n=i(e,t,r);if(void 0!==n)return parseFloat(n)};const l=function(e,t){const r=i(e,t);if(void 0!==r)return parseFloat(r)};const c=function(e,t){if(!e)return;if(!e.Value)return;if(!Array.isArray(e.Value))return;if(t&&e.Value.length<t)return;const r=[];for(let t=0;t<e.Value.length;t++)r.push(parseFloat(e.Value[t]));return r};function u(e){const t=e.indexOf(":");return e.substring(t+1)}function f(e,t=!0){return e&&e.Value?e.Value[0]&&t?e.Value[0]:e.Value:e}function d(e,t,r){return{shared:(t?Object.values(t[0]):[]).map((e=>e[0])).filter((e=>void 0!==e&&"object"==typeof e)),perFrame:(e?Object.values(e[r-1]):[]).map((e=>e.Value[0])).filter((e=>void 0!==e&&"object"==typeof e))}}function m(e){let{52009230:t,52009229:r,"00280008":n,...a}=e;return t=f(t,!1),r=f(r,!1),n=f(n),{PerFrameFunctionalGroupsSequence:t,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:a}}function g(e){const t=e.indexOf("/frames/")+8,r=e.slice(0,t),n=parseInt(e.slice(t),10);return{metadata:h[`${r}1`],frame:n}}const p={_retrieveMultiframeMetadata:g,retrieveMultiframeMetadata:function(e){return g(u(e))},isMultiframe:function(e){const t=i(e["00280008"]);return t&&t>1}};let h=[],x={};const b={add:function(e,t){const r=u(e);t.isMultiframe=p.isMultiframe(t),h[r]=t},get:function(e){const t=u(e),r=h[t];if(r&&!r?.isMultiframe)return r;const n=x[t];if(n)return n;const a=p._retrieveMultiframeMetadata(t);if(!a||!a.metadata)return;const{metadata:o,frame:i}=a;if(o){const e=function(e,t){const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:n,NumberOfFrames:a,rest:o}=m(t);if(r||a>1){const{shared:i,perFrame:s}=d(r,n,e),l=Object.assign(t,{frameNumber:e});return[...i,...s].forEach((e=>{Object.entries(e).forEach((([e,t])=>{l[e]=t}))})),Object.assign(o,{"00280008":a},l)}return t}(i,o);return x[t]=e,e}},remove:function(e){const t=u(e);h[t]=void 0,x[t]=void 0},purge:function(){h=[],x={}}};function w(e){return"RECON TOMO"===e||"RECON GATED TOMO"===e}function y(e){return i(e["00080060"]).includes("NM")}function k(e,t){const r=f(e["00080008"],!1);if(r)return r[t]}function T(e){let t=c(e["00200037"],6);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=f(e["00540022"]);r&&(t=c(r["00200037"],6))}return t}(e)),t}function D(e){let t=c(e["00200032"],3);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=f(e["00540022"]);r&&(t=c(r["00200032"],3))}return t}(e)),t}function S(e,t,r){const n={};for(const a of r)try{const r=t(a,e);if(r){const e={};for(const t in r)if(t in r){e[I(t)]=r[t]}Object.assign(n,e)}}catch(e){console.error(`Error retrieving ${a} data:`,e)}return n}const I=e=>e.charAt(0).toUpperCase()+e.slice(1),P=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function v(e,t){const r=c(e[t]);return r?r[0]:null}const E=function(e){return e?.Value?.length?Array.isArray(e.Value)?e.Value:"object"==typeof e.Value?(console.warn("Warning: Value should be an array, but an object was found. Encapsulating the object in an array."),[e.Value]):[]:[]};function A(e){const t=E(e["00186011"]);if(!t||!t.length)return null;return t.map((e=>{const t=v(e,"0018602C"),r=v(e,"0018602E"),n=v(e,"00186024"),a=v(e,"00186026");return{regionLocationMinY0:v(e,"0018601A"),regionLocationMaxY1:v(e,"0018601E"),regionLocationMinX0:v(e,"00186018"),regionLocationMaxX1:v(e,"0018601C"),referencePixelX0:v(e,"00186020"),referencePixelY0:v(e,"00186022"),physicalDeltaX:t,physicalDeltaY:r,physicalUnitsXDirection:n,physicalUnitsYDirection:a,referencePhysicalPixelValueY:v(e,"0018602A"),referencePhysicalPixelValueX:v(e,"00186028"),regionSpatialFormat:v(e,"00186012"),regionDataType:v(e,"00186014"),regionFlags:v(e,"00186016"),transducerFrequency:v(e,"00186030")}}))}function _(e,t){return{transferSyntaxUID:i(t["00020010"])||i(t["00083002"])}}const L=function e(t,r){const{MetadataModules:n}=bt.cornerstone.Enums,{dicomParser:a}=bt;if(t===n.MULTIFRAME){const{metadata:e,frame:t}=p.retrieveMultiframeMetadata(r);if(!e)return;const{PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,NumberOfFrames:o}=m(e);if(n||o>1){const{shared:e,perFrame:r}=d(n,a,t);return{NumberOfFrames:o,PerFrameFunctionalInformation:r,SharedFunctionalInformation:e}}return{NumberOfFrames:o}}const o=b.get(r);if(o){if(t===n.GENERAL_STUDY)return{studyDescription:i(o["00081030"]),studyDate:a.parseDA(i(o["00080020"])),studyTime:a.parseTM(i(o["00080030"],0,"")),accessionNumber:i(o["00080050"])};if(t===n.GENERAL_SERIES)return{modality:i(o["00080060"]),seriesInstanceUID:i(o["0020000E"]),seriesNumber:l(o["00200011"]),studyInstanceUID:i(o["0020000D"]),seriesDate:a.parseDA(i(o["00080021"])),seriesTime:a.parseTM(i(o["00080031"],0,"")),acquisitionDate:a.parseDA(i(o["00080022"])),acquisitionTime:a.parseTM(i(o["00080032"],0,""))};if(t===n.GENERAL_IMAGE)return{sopInstanceUID:i(o["00080018"]),instanceNumber:l(o["00200013"]),lossyImageCompression:i(o["00282110"]),lossyImageCompressionRatio:l(o["00282112"]),lossyImageCompressionMethod:i(o["00282114"])};if(t===n.PATIENT)return{patientID:i(o["00100020"]),patientName:i(o["00100010"])};if(t===n.PATIENT_STUDY)return{patientAge:l(o["00101010"]),patientSize:l(o["00101020"]),patientSex:i(o["00100040"]),patientWeight:l(o["00101030"])};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=i(o["00080060"]),t=k(o,2);return{modality:e,imageType:i(o["00080008"]),imageSubType:t,imageOrientationPatient:T(o),imagePositionPatient:D(o),sliceThickness:l(o["00180050"]),pixelSpacing:c(o["00280030"],2),numberOfFrames:l(o["00280008"]),isNMReconstructable:w(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=T(o),t=D(o),r=c(o["00280030"],2);let n=null,a=null;r&&(a=r[0],n=r[1]);let s=null,u=null;return e&&(s=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],u=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:i(o["00200052"]),rows:l(o["00280010"]),columns:l(o["00280011"]),imageOrientationPatient:e,rowCosines:s,columnCosines:u,imagePositionPatient:t,sliceThickness:l(o["00180050"]),sliceLocation:l(o["00201041"]),pixelSpacing:r,rowPixelSpacing:a,columnPixelSpacing:n}}if(t===n.ULTRASOUND_ENHANCED_REGION)return A(o);if(t===n.CALIBRATION){if("US"===i(o["00080060"])){return{sequenceOfUltrasoundRegions:A(o)}}}if(t===n.IMAGE_URL)return function(e,t){const{transferSyntaxUID:r}=_(e,t),n=bt.cornerstone.utilities.isVideoTransferSyntax(r),a=e.substring(7),o=a.replace("/frames/","/thumbnail/");let i=a.replace("/frames/","/rendered/");n&&(i=i.replace("/rendered/1","/rendered"));return{isVideo:n,rendered:i,thumbnail:o}}(r,o);if(t===n.CINE)return function(e,t){const r=i(t["00180040"]);return{cineRate:r,numberOfFrames:l(t["00280008"])}}(0,o);if(t===n.IMAGE_PIXEL)return{samplesPerPixel:l(o["00280002"]),photometricInterpretation:i(o["00280004"]),rows:l(o["00280010"]),columns:l(o["00280011"]),bitsAllocated:l(o["00280100"]),bitsStored:l(o["00280101"]),highBit:i(o["00280102"]),pixelRepresentation:l(o["00280103"]),planarConfiguration:l(o["00280006"]),pixelAspectRatio:i(o["00280034"]),smallestPixelValue:l(o["00280106"]),largestPixelValue:l(o["00280107"]),redPaletteColorLookupTableDescriptor:c(o["00281101"]),greenPaletteColorLookupTableDescriptor:c(o["00281102"]),bluePaletteColorLookupTableDescriptor:c(o["00281103"]),redPaletteColorLookupTableData:c(o["00281201"]),greenPaletteColorLookupTableData:c(o["00281202"]),bluePaletteColorLookupTableData:c(o["00281203"])};if(t===n.VOI_LUT)return{windowCenter:c(o["00281050"],1),windowWidth:c(o["00281051"],1)};if(t===n.MODALITY_LUT)return{rescaleIntercept:l(o["00281052"]),rescaleSlope:l(o["00281053"]),rescaleType:i(o["00281054"])};if(t===n.SOP_COMMON)return{sopClassUID:i(o["00080016"]),sopInstanceUID:i(o["00080018"])};if(t===n.PET_ISOTOPE){const e=i(o["00540016"]);if(void 0===e)return;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:a.parseTM(i(e["00181072"],0,"")),radiopharmaceuticalStartDateTime:i(e["00181078"],0,""),radionuclideTotalDose:l(e["00181074"]),radionuclideHalfLife:l(e["00181075"])}}}return t===n.OVERLAY_PLANE?function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=i(e[`${n}3000`]);if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.Value[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:l(e[`${n}0010`]),columns:l(e[`${n}0011`]),type:i(e[`${n}0040`]),x:l(e[`${n}0050`],1)-1,y:l(e[`${n}0050`],0)-1,pixelData:o,description:i(e[`${n}0022`]),label:i(e[`${n}1500`]),roiArea:i(e[`${n}1301`]),roiMean:i(e[`${n}1302`]),roiStandardDeviation:i(e[`${n}1303`])})}return{overlays:t}}(o):"transferSyntax"===t?_(r,o):t===n.PET_SERIES?{correctedImage:i(o["00280051"]),units:i(o["00541001"]),decayCorrection:i(o["00541102"])}:t===n.PET_IMAGE?{frameReferenceTime:l(o["00541300"]),actualFrameDuration:l(o["00181242"])}:"instance"===t?S(r,e,P):void 0}};function C(e,t,r){if(r+e.length>t.length)return!1;let n=r;for(let r=0;r<e.length;r++)if(e[r]!==t[n++])return!1;return!0}const O=function(e,t,r){r=r||0;const n=function(e){const t=new Uint8Array(e.length);for(let r=0,n=e.length;r<n;r++)t[r]=e.charCodeAt(r);return t}(t);for(let t=r;t<e.length;t++)if(n[0]===e[t]&&C(n,e,t))return t;return-1};let R={open(e,t){e.open("get",t,!0)},beforeSend(){},beforeProcessing:e=>Promise.resolve(e.response),imageCreated(){},strict:!1,decodeConfig:{convertFloatPixelDataToInt:!0,use16BitDataType:!1}};function M(e){R=Object.assign(R,e)}function F(){return R}const U=function(e,t,r={},n={}){const{cornerstone:a}=bt,o=F(),i=e=>{if("function"==typeof o.errorInterceptor){const t=new Error("request failed");t.request=e,t.response=e.response,t.status=e.status,o.errorInterceptor(t)}},s=new XMLHttpRequest,l=new Promise(((l,c)=>{o.open(s,e,r,n);const u=o.beforeSend(s,t,r,n);s.responseType="arraybuffer";const f=Object.assign({},r,u);Object.keys(f).forEach((function(t){null!==f[t]&&("Accept"===t&&-1!==e.indexOf("accept=")||s.setRequestHeader(t,f[t]))})),n.deferred={resolve:l,reject:c},n.url=e,n.imageId=t,s.onloadstart=function(r){o.onloadstart&&o.onloadstart(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadstart",i)},s.onloadend=function(r){o.onloadend&&o.onloadend(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadend",i)},s.onreadystatechange=function(e){o.onreadystatechange?o.onreadystatechange(e,n):4===s.readyState&&(200===s.status||206===s.status?o.beforeProcessing(s).then(l).catch((()=>{i(s),c(s)})):(i(s),c(s)))},s.onprogress=function(e){const t=e.loaded;let r,a;e.lengthComputable&&(r=e.total,a=Math.round(t/r*100)),o.onprogress&&o.onprogress(e,n)},s.onerror=function(){i(s),c(s)},s.onabort=function(){i(s),c(s)},s.send()}));return l.xhr=s,l},B={xhrRequest:U,setOptions:M,getOptions:F};var N=a(464);const{ImageQualityStatus:j}=N.Enums;function G(e,t,r){r||={};const n=new Uint8Array(t),a=!!r?.isPartial;if(-1===e.indexOf("multipart"))return{contentType:e,imageQualityStatus:a?j.SUBRESOLUTION:j.FULL_RESOLUTION,pixelData:n};let{tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l}=r;if(o||=O(n,"\r\n\r\n"),-1===o)throw new Error("invalid response - no multipart mime header");if(!s){const e=function(e,t,r){t=t||0,r=r||e.length-t;let n="";for(let a=t;a<t+r;a++)n+=String.fromCharCode(e[a]);return n}(n,0,o);if(i=e.split("\r\n"),s=function(e){for(let t=0;t<e.length;t++)if("--"===e[t].substr(0,2))return e[t]}(i),!s)throw new Error("invalid response - no boundary marker")}const c=o+4,u=O(n,s,c);if(-1===u&&!a)throw new Error("invalid response - terminating boundary not found");return l||=function(e){for(let t=0;t<e.length;t++)if("Content-Type:"===e[t].substr(0,13))return e[t].substr(13).trim()}(i),r.tokenIndex=o,r.boundary=s,r.responseHeaders=i,r.multipartContentType=l,r.isPartial=-1===u,{contentType:l,extractDone:!a||-1!==u,tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l,pixelData:t.slice(c,u-2)}}const{ImageQualityStatus:V}=N.Enums;function $(e,t=!0){return t?e.imageQualityStatus??V.FULL_RESOLUTION:V.SUBRESOLUTION}const{ProgressiveIterator:W}=N.utilities;function q(e,t,r={},n={}){const a=F(),{retrieveOptions:o={},streamingData:i={}}=n,s=o.minChunkSize||131072,l=new W("streamRequest");return l.generate((async(n,l)=>{const c=Object.assign({},r);Object.keys(c).forEach((function(t){null===c[t]&&(c[t]=void 0),"Accept"===t&&-1!==e.indexOf("accept=")&&(c[t]=void 0)}));try{const a=await fetch(e,{headers:r,signal:void 0});if(200!==a.status)throw new Error(`Couldn't retrieve ${e} got status ${a.status}`);const l=a.body.getReader(),c=a.headers,u=c.get("content-type"),f=Number(c.get("Content-Length"));let d=!1,m=i.encodedData,g=i.lastSize||0;for(i.isPartial=!0;!d;){const{done:r,value:a}=await l.read();if(m=Z(m,a),!m){if(d)throw new Error(`Done but no image frame available ${t}`);continue}if(d=r||m.byteLength===f,!d&&m.length<g+s)continue;g=m.length,i.isPartial=!r;const c=G(u,m,i),p=$(o,d),h={url:e,imageId:t,...c,percentComplete:r?100:100*c.pixelData?.length/f,imageQualityStatus:p,done:d};n.add(h,d)}}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}})(),console.error(e),l(e)}})),l.getNextPromise()}function Z(e,t){if(!e)return t;if(!t)return e;const r=new Uint8Array(e.length+t.length);return r.set(e,0),r.set(t,e.length),r}function Y(e,t,r={},n={}){const a=F(),{retrieveOptions:o={},streamingData:i}=n,s=i.chunkSize||function(e,t,r){const n=t[r];if("function"!=typeof n)return n;const a=b.get(e);return n(a,e)}(t,o,"chunkSize")||65536,l=new Promise((async(t,n)=>{const l=Object.assign({},r);Object.keys(l).forEach((function(e){null!==l[e]&&void 0!==l[e]||delete l[e]}));try{i.encodedData||(i.chunkSize=s,i.rangesFetched=0);const r=function(e,t){const{totalBytes:r,encodedData:n,chunkSize:a=65536}=e,{rangeIndex:o=0}=t;if(!(-1!==o||r&&n))return[0,""];if(-1===o||n?.byteLength>r-a)return[n?.byteLength||0,""];return[n?.byteLength||0,a*(o+1)-1]}(i,o),{encodedData:n,responseHeaders:a}=await async function(e,t,r,n){r&&(t=Object.assign(t,{Range:`bytes=${r[0]}-${r[1]}`}));let{encodedData:a}=n;if(r[1]&&a?.byteLength>r[1])return n;const o=await fetch(e,{headers:t,signal:void 0}),i=await o.arrayBuffer(),s=new Uint8Array(i),{status:l}=o;let c;a?(c=new Uint8Array(a.length+s.length),c.set(a,0),c.set(s,a.length),n.rangesFetched=1):(c=new Uint8Array(s.length),c.set(s,0),n.rangesFetched++);n.encodedData=a=c,n.responseHeaders=o.headers;const u=o.headers.get("Content-Range");u?n.totalBytes=Number(u.split("/")[1]):206===l&&r?""===r[1]||a?.length<r[1]?n.totalBytes=a.byteLength:n.totalBytes=Number.MAX_SAFE_INTEGER:n.totalBytes=a?.byteLength;return n}(e,l,r,i),c=a.get("content-type"),{totalBytes:u}=i,f=u===n.byteLength,d=G(c,n,{isPartial:!0}),m=$(o,f||d.extractDone);t({...d,imageQualityStatus:m,percentComplete:d.extractDone?100:100*s/u})}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}else console.warn("rangeRequest:Caught",e)})(e),console.error(e),n(e)}}));return l}const z=function(e,t,r="application/octet-stream",n){const{streamingData:a,retrieveOptions:o={}}=n||{},i={Accept:r};let s=o.urlArguments?`${e}${-1===e.indexOf("?")?"?":"&"}${o.urlArguments}`:e;if(o.framesPath&&(s=s.replace("/frames/",o.framesPath)),a?.url!==s&&(n.streamingData={url:s}),void 0!==o.rangeIndex)return Y(s,t,i,n);if(o.streaming)return q(s,t,i,n);const l=U(s,t,i),{xhr:c}=l;return l.then((function(e){const t=G(c.getResponseHeader("Content-Type")||"application/octet-stream",new Uint8Array(e));return t.imageQualityStatus=$(o,!0),t}))};const H=function(e){let t,r=e[0],n=e[0];const a=e.length;for(let o=1;o<a;o++)t=e[o],r=Math.min(r,t),n=Math.max(n,t);return{min:r,max:n}};function Q(r,n,a){0===r.planarConfiguration?e(r.pixelData,n,a):t(r.pixelData,n,a)}function X(e,t,a){if("RGB"===e.photometricInterpretation)Q(e,t,a);else if("YBR_RCT"===e.photometricInterpretation)Q(e,t,a);else if("YBR_ICT"===e.photometricInterpretation)Q(e,t,a);else if("PALETTE COLOR"===e.photometricInterpretation)yt(e,t,a);else if("YBR_FULL_422"===e.photometricInterpretation)!function(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%2!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 2");const n=e.length/2;let a=0,o=0;if(r)for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=255,t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128),t[o++]=255}else for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128)}}(e.pixelData,t,a);else{if("YBR_FULL"!==e.photometricInterpretation)throw new Error(`No color space conversion for photometric interpretation ${e.photometricInterpretation}`);!function(e,t,a){0===e.planarConfiguration?r(e.pixelData,t,a):n(e.pixelData,t,a)}(e,t,a)}}function K(e){return function(e){let t;try{return decodeURIComponent(escape(e))}catch(r){if(t=r,t instanceof URIError)return e;throw t}}(String.fromCharCode.apply(null,Array.prototype.slice.apply(new Uint8Array(e))))}const J=function(e,t,r){const n=(new Date).getTime(),a=new Blob([t],{type:"image/jpeg"});return new Promise(((t,o)=>{const i=new FileReader;void 0===i.readAsBinaryString?i.readAsArrayBuffer(a):i.readAsBinaryString(a),i.onload=function(){const a=new Image;a.onload=function(){r.height=a.height,r.width=a.width,e.rows=a.height,e.columns=a.width;const o=r.getContext("2d");o.drawImage(this,0,0);const i=o.getImageData(0,0,a.width,a.height),s=(new Date).getTime();e.pixelData=new Uint8Array(i.data.buffer),e.imageData=i,e.decodeTimeInMS=s-n;const l=H(e.pixelData);e.smallestPixelValue=l.min,e.largestPixelValue=l.max,e.pixelDataLength=e.pixelData.length,t(e)},a.onerror=function(e){o(e)},void 0===i.readAsBinaryString?a.src=`data:image/jpeg;base64,${window.btoa(K(i.result))}`:a.src=`data:image/jpeg;base64,${window.btoa(i.result)}`},i.onerror=e=>{o(e)}}))};function ee(){return new Worker(a.p+"index.worker.f4bda803c15bc6359d5f.worker.js")}let te=0;const re=[],ne=[],ae=F(),oe={maxWebWorkers:navigator.hardwareConcurrency||1,startWebWorkersOnDemand:!0,webWorkerTaskPaths:[],taskConfiguration:{decodeTask:{initializeCodecsOnStartup:!1,strict:ae.strict}}};let ie;const se={maxWebWorkers:0,numWebWorkers:0,numTasksQueued:0,numTasksExecuting:0,numTasksCompleted:0,totalTaskTimeInMS:0,totalTimeDelayedInMS:0};function le(){if(re.length){for(let e=0;e<ne.length;e++)if("ready"===ne[e].status){ne[e].status="busy";const t=re.shift();t.start=(new Date).getTime();const r=(new Date).getTime();return se.totalTimeDelayedInMS+=r-t.added,ne[e].task=t,ne[e].worker.postMessage({taskType:t.taskType,workerIndex:e,data:t.data},t.transferList),void se.numTasksExecuting++}ne.length<ie.maxWebWorkers&&ue()}}function ce(e){if("initialize"===e.data.taskType)ne[e.data.workerIndex].status="ready",le();else{const t=ne[e.data.workerIndex].task.start,r="success"===e.data.status?"resolve":"reject";try{ne[e.data.workerIndex].task.deferred[r](e.data.result)}catch(e){console.warn("Caught error delivering response",e)}ne[e.data.workerIndex].task=void 0,se.numTasksExecuting--,ne[e.data.workerIndex].status="ready",se.numTasksCompleted++;const n=(new Date).getTime();se.totalTaskTimeInMS+=n-t,le()}}function ue(){if(ne.length>=ie.maxWebWorkers)return;const e=new ee;ne.push({worker:e,status:"initializing"}),e.addEventListener("message",ce),e.postMessage({taskType:"initialize",workerIndex:ne.length-1,config:ie})}function fe(e){if(ie=e=e||oe,ie.maxWebWorkers=ie.maxWebWorkers||navigator.hardwareConcurrency||1,!ie.startWebWorkersOnDemand)for(let e=0;e<ie.maxWebWorkers;e++)ue()}const de={initialize:fe,loadWebWorkerTask:function(e,t){ie.webWorkerTaskPaths.push(e),t&&(ie.taskConfiguration=Object.assign(ie.taskConfiguration,t));for(let t=0;t<ne.length;t++)ne[t].worker.postMessage({taskType:"loadWebWorkerTask",workerIndex:ne.length-1,sourcePath:e,config:ie})},addTask:function(e,t,r=0,n){ie||fe();let a={resolve:void 0,reject:void 0};const o=new Promise(((e,t)=>{a={resolve:e,reject:t}}));let i;for(i=0;i<re.length&&!(re[i].priority<r);i++);const s=te++;return re.splice(i,0,{taskId:s,taskType:e,status:"ready",added:(new Date).getTime(),data:t,deferred:a,priority:r,transferList:n}),le(),{taskId:s,promise:o}},getStatistics:function(){return se.maxWebWorkers=ie.maxWebWorkers,se.numWebWorkers=ne.length,se.numTasksQueued=re.length,se},setTaskPriority:function(e,t=0){for(let r=0;r<re.length;r++)if(re[r].taskId===e){const e=re.splice(r,1)[0];for(e.priority=t,r=0;r<re.length&&!(re[r].priority<t);r++);return re.splice(r,0,e),!0}return!1},cancelTask:function(e,t){for(let r=0;r<re.length;r++)if(re[r].taskId===e){return re.splice(r,1).deferred.reject(t),!0}return!1},webWorkers:ne,terminate:function(){for(let e=0;e<ne.length;e++)ne[e].worker.terminate();ne.length=0,ie=void 0}};var me=a(578);function ge(e,t,r,n,a){const o={...n};delete o.loader,delete o.streamingData;const i=o.priority||void 0,s=o.transferPixelData?[r.buffer]:void 0;return de.addTask("decodeTask",{imageFrame:e,transferSyntax:t,pixelData:r,options:o,decodeConfig:a},i,s).promise}window.pako={inflateRaw:me.Hq};const pe=function(e,t,r,n,a={},o){switch(t){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":case"1.2.840.10008.1.2.2":case"1.2.840.10008.1.2.1.99":case"1.2.840.10008.1.2.5":case"1.2.840.10008.1.2.4.51":case"1.2.840.10008.1.2.4.57":case"1.2.840.10008.1.2.4.70":case"1.2.840.10008.1.2.4.80":case"1.2.840.10008.1.2.4.81":case"1.2.840.10008.1.2.4.90":case"1.2.840.10008.1.2.4.91":case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":return ge(e,t,r,a,o);case"1.2.840.10008.1.2.4.50":return 8!==e.bitsAllocated||3!==e.samplesPerPixel&&4!==e.samplesPerPixel?ge(e,t,r,a,o):J(e,r,n)}return Promise.reject(new Error(`No decoder for transfer syntax ${t}`))};const he=function(e){const{cornerstone:t}=bt,r=t.metaData.get("imagePixelModule",e);return{samplesPerPixel:r.samplesPerPixel,photometricInterpretation:r.photometricInterpretation,planarConfiguration:r.planarConfiguration,rows:r.rows,columns:r.columns,bitsAllocated:r.bitsAllocated,bitsStored:r.bitsStored,pixelRepresentation:r.pixelRepresentation,smallestPixelValue:r.smallestPixelValue,largestPixelValue:r.largestPixelValue,redPaletteColorLookupTableDescriptor:r.redPaletteColorLookupTableDescriptor,greenPaletteColorLookupTableDescriptor:r.greenPaletteColorLookupTableDescriptor,bluePaletteColorLookupTableDescriptor:r.bluePaletteColorLookupTableDescriptor,redPaletteColorLookupTableData:r.redPaletteColorLookupTableData,greenPaletteColorLookupTableData:r.greenPaletteColorLookupTableData,bluePaletteColorLookupTableData:r.bluePaletteColorLookupTableData,pixelData:void 0,imageId:e}};function xe(e){return"RGB"===e||"PALETTE COLOR"===e||"YBR_FULL"===e||"YBR_FULL_422"===e||"YBR_PARTIAL_422"===e||"YBR_PARTIAL_420"===e||"YBR_RCT"===e||"YBR_ICT"===e}const be={"1.2.840.10008.1.2.1":"application/octet-stream","1.2.840.10008.1.2":"application/octet-stream","1.2.840.10008.1.2.2":"application/octet-stream","1.2.840.10008.1.2.5":"image/dicom-rle"};let we="";function ye(e){const t=function(e,t){let r;return Number.isInteger(e)&&Number.isInteger(t)&&(e>=0?t<=255?r=Uint8Array:t<=65535&&(r=Uint16Array):e>=-128&&t<=127?r=Int8Array:e>=-32768&&t<=32767&&(r=Int16Array)),r||Float32Array}(e.smallestPixelValue,e.largestPixelValue);if(!t)throw new Error("Could not apply a typed array to the pixel data");{const r=new t(e.pixelData);e.pixelData=r}}const ke=function(e,t,r,n={}){const a=n.useRGBA;if(n.preScale={enabled:!(!n.preScale||void 0===n.preScale.enabled)&&n.preScale.enabled},!t?.length)return Promise.reject(new Error("The pixel data is missing"));const{cornerstone:o}=bt,{MetadataModules:i}=o.Enums,s=document.createElement("canvas"),l=he(e);if(l.decodeLevel=n.decodeLevel,n.allowFloatRendering=o.canRenderFloatTextures(),n.preScale.enabled){const t=function(e,t){const r=e.get("modalityLutModule",t)||{},n=e.get("generalSeriesModule",t)||{},{modality:a}=n,o={rescaleSlope:r.rescaleSlope,rescaleIntercept:r.rescaleIntercept,modality:a},i=e.get("scalingModule",t)||{};return{...o,..."PT"===a&&{suvbw:i.suvbw}}}(o.metaData,e);t&&(n.preScale={...n.preScale,scalingParameters:t})}n.isSharedArrayBuffer=n.targetBuffer?.arrayBuffer&&n.targetBuffer.arrayBuffer instanceof SharedArrayBuffer;const{decodeConfig:c}=F();c.use16BitDataType=!!(n&&"Uint16Array"===n.targetBuffer?.type||"Int16Array"===n.targetBuffer?.type)||(n.useNativeDataType||c.use16BitDataType);const u=pe(l,r,t,s,n,c),{use16BitDataType:f}=c,d=xe(l.photometricInterpretation);return new Promise(((t,l)=>{u.then((function(l){if(n.skipCreateImage)return t(l);let c=!1;if(n.targetBuffer&&n.targetBuffer.type&&!d){const{arrayBuffer:e,type:t,offset:r=0,length:a}=n.targetBuffer,o=l.pixelDataLength,i=r,s=null!=a?a:o-i,u={Uint8Array,Uint16Array:f?Uint16Array:void 0,Int16Array:f?Int16Array:void 0,Float32Array};if(s!==l.pixelDataLength)throw new Error(`target array for image does not have the same length (${s}) as the decoded image length (${l.pixelDataLength}).`);const d=u[t],m=e?new d(e,i,s):new d(l.pixelData);if(s!==l.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");l.pixelData=m,c=!0}c||ye(l);const u=o.metaData.get(i.IMAGE_PLANE,e)||{},m=o.metaData.get(i.VOI_LUT,e)||{},g=o.metaData.get(i.MODALITY_LUT,e)||{},p=o.metaData.get(i.SOP_COMMON,e)||{},h=o.metaData.get(i.CALIBRATION,e)||{};if(d){const{rows:e,columns:t}=l;if(be[r]){s.height=l.rows,s.width=l.columns;let e=s.getContext("2d").createImageData(l.columns,l.rows);a||(e={...e,data:new Uint8ClampedArray(l.samplesPerPixel*l.columns*l.rows)}),X(l,e.data,a),l.imageData=e,l.pixelData=e.data,l.pixelDataLength=e.data.length}else if(!a&&l.pixelDataLength===4*e*t){const e=new Uint8Array(l.pixelData.length/4*3);l.pixelData=function(e,t){const r=e.length/4;let n=0,a=0;for(let o=0;o<r;o++)t[a++]=e[n++],t[a++]=e[n++],t[a++]=e[n++],n++;return t}(l.pixelData,e),l.pixelDataLength=l.pixelData.length}const n=H(l.pixelData);l.smallestPixelValue=n.min,l.largestPixelValue=n.max}const x={imageId:e,color:d,calibration:h,columnPixelSpacing:u.columnPixelSpacing,columns:l.columns,height:l.rows,preScale:l.preScale,intercept:g.rescaleIntercept?g.rescaleIntercept:0,slope:g.rescaleSlope?g.rescaleSlope:1,invert:"MONOCHROME1"===l.photometricInterpretation,minPixelValue:l.smallestPixelValue,maxPixelValue:l.largestPixelValue,rowPixelSpacing:u.rowPixelSpacing,rows:l.rows,sizeInBytes:l.pixelData.byteLength,width:l.columns,windowCenter:m.windowCenter?m.windowCenter[0]:void 0,windowWidth:m.windowWidth?m.windowWidth[0]:void 0,voiLUTFunction:m.voiLUTFunction?m.voiLUTFunction:void 0,decodeTimeInMS:l.decodeTimeInMS,floatPixelData:void 0,imageFrame:l,rgba:d&&a,getPixelData:()=>l.pixelData,getCanvas:void 0,numComps:void 0};var b;if(x.color&&(x.getCanvas=function(){if(we===e)return s;const t=x.columns,r=x.rows;s.height=r,s.width=t;const n=s.getContext("2d"),a=n.createImageData(t,r),o=l.pixelData;if(o.length===t*r*4)for(let e=0;e<o.length;e++)a.data[e]=o[e];else if(o.length===t*r*3){let e=0;for(let t=0;t<o.length;t+=3)a.data[e++]=o[t],a.data[e++]=o[t+1],a.data[e++]=o[t+2],a.data[e++]=255}return l.pixelData=a.data,l.pixelDataLength=a.data.length,l.imageData=a,n.putImageData(l.imageData,0,0),we=e,s}),g.modalityLUTSequence&&g.modalityLUTSequence.length>0&&("1.2.840.10008.5.1.4.1.1.12.1"!==(b=p.sopClassUID)&&"1.2.840.10008.5.1.4.1.1.12.2.1"!==b)&&(x.modalityLUT=g.modalityLUTSequence[0]),m.voiLUTSequence&&m.voiLUTSequence.length>0&&(x.voiLUT=m.voiLUTSequence[0]),x.color&&(x.windowWidth=256,x.windowCenter=128),void 0===x.windowCenter||void 0===x.windowWidth){const e=x.imageFrame.minAfterScale,t=x.imageFrame.maxAfterScale;x.windowWidth=t-e,x.windowCenter=(t+e)/2}t(x)}),l)}))},{ProgressiveIterator:Te}=N.utilities,{ImageQualityStatus:De}=N.Enums,Se=new Set(["3.2.840.10008.1.2.4.96","1.2.840.10008.1.2.4.202","1.2.840.10008.1.2.4.203"]);function Ie(e){const t="1.2.840.10008.1.2";if(!e)return t;const r=e.split(";"),n={};r.forEach((e=>{const t=e.split("=");if(2!==t.length)return;const r=t[1].trim().replace(/"/g,"");n[t[0].trim()]=r}));const a={"image/jpeg":"1.2.840.10008.1.2.4.50","image/x-dicom-rle":"1.2.840.10008.1.2.5","image/x-jls":"1.2.840.10008.1.2.4.80","image/jls":"1.2.840.10008.1.2.4.80","image/jll":"1.2.840.10008.1.2.4.70","image/jp2":"1.2.840.10008.1.2.4.90","image/jpx":"1.2.840.10008.1.2.4.92","image/jphc":"3.2.840.10008.1.2.4.96","image/jxl":"1.2.840.10008.1.2.4.140"};return n["transfer-syntax"]?n["transfer-syntax"]:e&&!Object.keys(n).length&&a[e]?a[e]:n.type&&a[n.type]?a[n.type]:a[e]?a[e]:t}function Pe(e,t=4){const r=e/100-.02;return r>1/4?Math.min(t,0):r>1/16?Math.min(t,1):r>1/64?Math.min(t,2):Math.min(t,3)}const ve=function(e,t={}){const r=bt.cornerstone.imageRetrievalPoolManager,n=(new Date).getTime(),a=new Te("decompress"),o=t.requestType||"interaction",i=t.additionalDetails||{imageId:e},s=void 0===t.priority?5:t.priority,l=t.addToBeginning||!1,c=e.substring(7);return r.addRequest(async function(e,r,o){a.generate((async a=>{const i=Te.as(z(e,r,o,t));let s=10;for await(const e of i){const{pixelData:o,imageQualityStatus:i=De.FULL_RESOLUTION,percentComplete:l,done:c=!0,extractDone:u=!0}=e,f=Ie(e.contentType);if(!u&&!Se.has(f))continue;const d=e.decodeLevel??(i===De.FULL_RESOLUTION?0:Pe(l,t.retrieveOptions?.decodeLevel));if(c||!(s<=d))try{const e={...t,decodeLevel:d},l=await ke(r,o,f,e),u=(new Date).getTime();l.loadTimeInMS=u-n,l.transferSyntaxUID=f,l.imageQualityStatus=i,a.add(l,c),s=d}catch(e){if(u)throw console.warn("Couldn't decode",e),e}}}))}.bind(this,c,e,"multipart/related; type=application/octet-stream; transfer-syntax=*"),o,i,s,l),{promise:a.getDonePromise(),cancelFn:void 0}};const Ee={metaData:{getNumberString:s,getNumberValue:l,getNumberValues:c,getValue:i,metaDataProvider:L},findIndexOfString:O,getPixelData:z,loadImage:ve,metaDataManager:b,register:function(e){e.registerImageLoader("wadors",ve),e.metaData.addProvider(L)}};function Ae(e,t){if(e.elements[t]&&6===e.elements[t].length)return[e.uint16(t,0),e.uint16(t,1),e.uint16(t,2)]}function _e(e,t,r){const n=[],a=e.elements[t];for(let o=0;o<r[0];o++)16===r[2]?n[o]=e.uint16(t,o):n[o]=e.byteArray[o+a.dataOffset];return n}const Le=function(e){const t={samplesPerPixel:e.uint16("x00280002"),photometricInterpretation:e.string("x00280004"),rows:e.uint16("x00280010"),columns:e.uint16("x00280011"),bitsAllocated:e.uint16("x00280100"),bitsStored:e.uint16("x00280101"),highBit:e.uint16("x00280102"),pixelRepresentation:e.uint16("x00280103"),planarConfiguration:e.uint16("x00280006"),pixelAspectRatio:e.string("x00280034")};return function(e,t){0===e.uint16("x00280103")?(t.smallestPixelValue=e.uint16("x00280106"),t.largestPixelValue=e.uint16("x00280107")):(t.smallestPixelValue=e.int16("x00280106"),t.largestPixelValue=e.int16("x00280107"))}(e,t),"PALETTE COLOR"===t.photometricInterpretation&&e.elements.x00281101&&function(e,t){t.redPaletteColorLookupTableDescriptor=Ae(e,"x00281101"),t.greenPaletteColorLookupTableDescriptor=Ae(e,"x00281102"),t.bluePaletteColorLookupTableDescriptor=Ae(e,"x00281103"),0===t.redPaletteColorLookupTableDescriptor[0]&&(t.redPaletteColorLookupTableDescriptor[0]=65536,t.greenPaletteColorLookupTableDescriptor[0]=65536,t.bluePaletteColorLookupTableDescriptor[0]=65536);const r=t.redPaletteColorLookupTableDescriptor[0],n=e.elements.x00281201.length===r?8:16;t.redPaletteColorLookupTableDescriptor[2]!==n&&(t.redPaletteColorLookupTableDescriptor[2]=n,t.greenPaletteColorLookupTableDescriptor[2]=n,t.bluePaletteColorLookupTableDescriptor[2]=n),t.redPaletteColorLookupTableData=_e(e,"x00281201",t.redPaletteColorLookupTableDescriptor),t.greenPaletteColorLookupTableData=_e(e,"x00281202",t.greenPaletteColorLookupTableDescriptor),t.bluePaletteColorLookupTableData=_e(e,"x00281203",t.bluePaletteColorLookupTableDescriptor)}(e,t),t};function Ce(e,t){let r=t.uint16("x00283002",0);0===r&&(r=65535);let n=0;n=0===e?t.uint16("x00283002",1):t.int16("x00283002",1);const a={id:"1",firstValueMapped:n,numBitsPerEntry:t.uint16("x00283002",2),lut:[]};for(let n=0;n<r;n++)a.lut[n]=0===e?t.uint16("x00283006",n):t.int16("x00283006",n);return a}const Oe=function(e,t){if(!t||!t.items||!t.items.length)return;const r=[];for(let n=0;n<t.items.length;n++){const a=Ce(e,t.items[n].dataSet);a&&r.push(a)}return r};const Re=function(e){const t=e.string("x00080016");if("1.2.840.10008.5.1.4.1.1.2"===t||"1.2.840.10008.5.1.4.1.1.2.1"===t)return 1;const r=e.floatString("x00281052"),n=e.floatString("x00281053");if(void 0!==r&&void 0!==n){const t=function(e){const t=e.uint16("x00280103"),r=e.uint16("x00280101");return 0===t?0:-1<<r-1}(e);return t*n+r<0?1:0}return e.elements.x00283000&&e.elements.x00283000.length>0?0:e.uint16("x00280103")};const Me=function(e,t,r){const n=[],a=e.string(t);if(!a)return;const o=a.split("\\");if(!(r&&o.length<r)){for(let e=0;e<o.length;e++)n.push(parseFloat(o[e]));return n}};const Fe=function(e){const t=e.indexOf(":");let r=e.substring(t+1);const n=r.indexOf("frame=");let a;if(-1!==n){const e=r.substring(n+6);a=parseInt(e,10),r=r.substring(0,n-1)}return{scheme:e.substring(0,t),url:r,frame:a,pixelDataFrame:void 0!==a?a-1:void 0}};function Ue(e){const{dicomParser:t}=bt;let r,n=t.parseDicom(e,{untilTag:"x7fe00010"});n.elements.x7fe00010||console.warn("Pixel data not found!");try{r=t.parseDicom(e)}catch(e){console.error(e),console.log("pixel data dataset:",e.dataSet),r=e.dataSet}return n.elements.x7fe00010=r.elements.x7fe00010,n=function(e){const t=e.elements.x7fe00010.fragments,r=e.byteArray.length;for(const e of t){const{position:t,length:n}=e;n>r-t&&(console.log(`Truncated fragment, changing fragment length from ${e.length} to ${r-t}`),e.length=r-t)}return e}(n),n}async function Be(e,t,r){const n=Ue(e),{uri:a,imageId:o,fileTotalLength:i}=r;return n.fetchMore=async function(s){const l=Object.assign({uri:a,imageId:o,fetchedLength:e.length,lengthToFetch:i-e.length},s),{fetchedLength:c,lengthToFetch:u}=l,{arrayBuffer:f}=await t(a,o,{byteRange:`${c}-${c+u}`}),d=new Uint8Array(f),m=new Uint8Array(n.byteArray.length+d.length);return m.set(n.byteArray),m.set(d,n.byteArray.length),Be(m,t,r)},n}function Ne(e,t,r){const n={};(t?Object.values(t.items[0].dataSet.elements):[]).map((e=>n[e.tag]=e));const a={};return(e?Object.values(e.items[r-1].dataSet.elements):[]).map((e=>a[e.tag]=e)),{shared:n,perFrame:a}}function je(e){if(!e)return;const{elements:t,...r}=e,{x52009230:n,x52009229:a,...o}=t;return{NumberOfFrames:e.intString("x00280008"),PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o,otherAttributtes:r}}function Ge(e){if(qe[e])return qe[e]}function Ve(e){if(!e)return!1;const t=e.intString("x00280008");return t&&t>1}const $e={_get:Ge,generateMultiframeWADOURIs:function(e){const t=[],r=Ge(e);if(Ve(r)){const n=r.intString("x00280008");for(let r=1;r<=n;r++)t.push(`${e}&frame=${r}`)}else t.push(e);return t},retrieveMultiframeDataset:function(e){const t=function(e){return e.indexOf("&frame=")}(e),r=-1===t?e:e.slice(0,t),n=parseInt(e.slice(t+7),10)||1;let a;return a=qe[r]?qe[r].dataSet:void 0,{dataSet:a,frame:n}},isMultiframeDataset:function(e){return Ve(Ge(e))}};let We=0,qe={},Ze={};function Ye(){return{cacheSizeInBytes:We,numberOfDataSetsCached:Object.keys(qe).length}}const ze={isLoaded:function(e){return void 0!==qe[e]},load:function(e,t=U,r){const{cornerstone:n,dicomParser:a}=bt;if(qe[e])return new Promise((t=>{qe[e].cacheCount++,t(qe[e].dataSet)}));if(Ze[e])return Ze[e].cacheCount++,Ze[e];const o=t(e,r),i=new Promise(((s,l)=>{o.then((async function(o){const c={isPartialContent:!1,fileTotalLength:null};if(!(o instanceof ArrayBuffer)){if(!o.arrayBuffer)return l(new Error("If not returning ArrayBuffer, must return object with `arrayBuffer` parameter"));c.isPartialContent=o.flags.isPartialContent,c.fileTotalLength=o.flags.fileTotalLength,o=o.arrayBuffer}const u=new Uint8Array(o);let f;try{f=c.isPartialContent?await Be(u,t,{uri:e,imageId:r,fileTotalLength:c.fileTotalLength}):a.parseDicom(u)}catch(e){return l(e)}qe[e]={dataSet:f,cacheCount:i.cacheCount},We+=f.byteArray.length,s(f),n.triggerEvent(n.events,"datasetscachechanged",{uri:e,action:"loaded",cacheInfo:Ye()})}),l).then((()=>{delete Ze[e]}),(()=>{delete Ze[e]}))}));return i.cacheCount=1,Ze[e]=i,i},unload:function(e){const{cornerstone:t}=bt;qe[e]&&(qe[e].cacheCount--,0===qe[e].cacheCount&&(We-=qe[e].dataSet.byteArray.length,delete qe[e],t.triggerEvent(t.events,"datasetscachechanged",{uri:e,action:"unloaded",cacheInfo:Ye()})))},getInfo:Ye,purge:function(){qe={},Ze={},We=0},get:function(e){let t;if(e.includes("&frame=")){const{frame:r,dataSet:n}=$e.retrieveMultiframeDataset(e);t=function(e,t){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o}=je(t);if(n||r>1){const{shared:r,perFrame:i}=Ne(n,a,e),s={elements:{...o,...r,...i}},l=Object.create(t);return Object.assign(l,s)}return t}(r,n)}else qe[e]&&(t=qe[e].dataSet);return t},update:function(e,t){const r=qe[e];r?(We-=r.dataSet.byteArray.length,r.dataSet=t,We+=t.byteArray.length,bt.cornerstone.triggerEvent(bt.cornerstone.events,"datasetscachechanged",{uri:e,action:"updated",cacheInfo:Ye()})):console.error(`No loaded dataSet for uri ${e}`)}};function He(e,t){const r=e.string("x00080008");if(r){const e=r.split("\\");if(e.length>t)return e[t]}}function Qe(e){let t=Me(e,"x00200037",6);return!t&&e.elements.x00209116&&(t=Me(e.elements.x00209116.items[0].dataSet,"x00200037",6)),t||(t=function(e){let t;const r=e.string("x00080060");if(r?.includes("NM")){const r=He(e,2);r&&w(r)&&e.elements.x00540022&&(t=Me(e.elements.x00540022.items[0].dataSet,"x00200037",6))}return t}(e)),t}function Xe(e){let t=Me(e,"x00200032",3);return!t&&e.elements.x00209113&&(t=Me(e.elements.x00209113.items[0].dataSet,"x00200032",3)),t||(t=function(e){let t;const r=e.string("x00080060");if(r?.includes("NM")){const r=He(e,2);r&&w(r)&&e.elements.x00540022&&(t=Me(e.elements.x00540022.items[0].dataSet,"x00200032",3))}return t}(e)),t}function Ke(e){let t=Me(e,"x00280030",2);return!t&&e.elements.x00289110&&(t=Me(e.elements.x00289110.items[0].dataSet,"x00280030",2)),t}function Je(e){let t;return e.elements.x00180050?t=e.floatString("x00180050"):e.elements.x00289110&&e.elements.x00289110.items.length&&e.elements.x00289110.items[0].dataSet.elements.x00180050&&(t=e.elements.x00289110.items[0].dataSet.floatString("x00180050")),t}const et=function e(t,r){const{MetadataModules:n}=bt.cornerstone.Enums,{dicomParser:a}=bt;if(Array.isArray(r))return;const o=Fe(r);if(t===n.MULTIFRAME){const e=$e.retrieveMultiframeDataset(o.url);if(!e.dataSet)return;const t=function(e,t){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a}=je(e);if(n||r>1){const{shared:e,perFrame:o}=Ne(n,a,t);return{NumberOfFrames:r,PerFrameFunctionalInformation:o,SharedFunctionalInformation:e}}return{NumberOfFrames:r}}(e.dataSet,e.frame);return t}let i=o.url;o.frame&&(i=`${i}&frame=${o.frame}`);const s=ze.get(i);if(s){if(t===n.GENERAL_STUDY)return{studyDescription:s.string("x00081030"),studyDate:a.parseDA(s.string("x00080020")),studyTime:a.parseTM(s.string("x00080030")||""),accessionNumber:s.string("x00080050")};if(t===n.GENERAL_SERIES)return{modality:s.string("x00080060"),seriesInstanceUID:s.string("x0020000e"),seriesNumber:s.intString("x00200011"),studyInstanceUID:s.string("x0020000d"),seriesDate:a.parseDA(s.string("x00080021")),seriesTime:a.parseTM(s.string("x00080031")||""),acquisitionDate:a.parseDA(s.string("x00080022")),acquisitionTime:a.parseTM(s.string("x00080032")||"")};if(t===n.GENERAL_IMAGE)return{sopInstanceUID:s.string("x00080018"),instanceNumber:s.intString("x00200013"),lossyImageCompression:s.string("x00282110"),lossyImageCompressionRatio:s.floatString("x00282112"),lossyImageCompressionMethod:s.string("x00282114")};if(t===n.PATIENT)return{patientID:s.string("x00100020"),patientName:s.string("x00100010")};if(t===n.PATIENT_STUDY)return{patientAge:s.intString("x00101010"),patientSize:s.floatString("x00101020"),patientSex:s.string("x00100040"),patientWeight:s.floatString("x00101030")};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=s.string("x00080060"),t=He(s,2);return{modality:e,imageType:s.string("x00080008"),imageSubType:t,imageOrientationPatient:Qe(s),imagePositionPatient:Xe(s),sliceThickness:Je(s),pixelSpacing:Ke(s),numberOfFrames:s.uint16("x00280008"),isNMReconstructable:w(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=Qe(s),t=Xe(s),r=Ke(s),n=Je(s);let a=null,o=null;r&&(o=r[0],a=r[1]);let i=null,l=null;return e&&(i=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],l=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:s.string("x00200052"),rows:s.uint16("x00280010"),columns:s.uint16("x00280011"),imageOrientationPatient:e,rowCosines:i,columnCosines:l,imagePositionPatient:t,sliceThickness:n,sliceLocation:s.floatString("x00201041"),pixelSpacing:r,rowPixelSpacing:o,columnPixelSpacing:a}}if(t===n.CINE)return{frameTime:s.floatString("x00181063")};if(t===n.IMAGE_PIXEL)return Le(s);if(t===n.VOI_LUT){const e=Re(s);return{windowCenter:Me(s,"x00281050",1),windowWidth:Me(s,"x00281051",1),voiLUTSequence:Oe(e,s.elements.x00283010)}}if(t===n.MODALITY_LUT)return{rescaleIntercept:s.floatString("x00281052"),rescaleSlope:s.floatString("x00281053"),rescaleType:s.string("x00281054"),modalityLUTSequence:Oe(s.uint16("x00280103"),s.elements.x00283000)};if(t===n.SOP_COMMON)return{sopClassUID:s.string("x00080016"),sopInstanceUID:s.string("x00080018")};if(t===n.PET_ISOTOPE){const e=s.elements.x00540016;if(void 0===e)return;const t=e.items[0].dataSet;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:a.parseTM(t.string("x00181072")||""),radionuclideTotalDose:t.floatString("x00181074"),radionuclideHalfLife:t.floatString("x00181075")}}}return t===n.OVERLAY_PLANE?function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=e.elements[`${n}3000`];if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.byteArray[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:e.uint16(`${n}0010`),columns:e.uint16(`${n}0011`),type:e.string(`${n}0040`),x:e.int16(`${n}0050`,1)-1,y:e.int16(`${n}0050`,0)-1,pixelData:o,description:e.string(`${n}0022`),label:e.string(`${n}1500`),roiArea:e.string(`${n}1301`),roiMean:e.string(`${n}1302`),roiStandardDeviation:e.string(`${n}1303`)})}return{overlays:t}}(s):"transferSyntax"===t?{transferSyntaxUID:s.string("x00020010")}:t===n.PET_SERIES?{correctedImage:s.string("x00280051"),units:s.string("x00541001"),decayCorrection:s.string("x00541102")}:t===n.PET_IMAGE?{frameReferenceTime:s.floatString(s.string("x00541300")||""),actualFrameDuration:s.intString(s.string("x00181242"))}:"instance"===t?S(r,e,P):void 0}};let tt=[];const rt={add:function(e){return"dicomfile:"+(tt.push(e)-1)},get:function(e){return tt[e]},remove:function(e){tt[e]=void 0},purge:function(){tt=[]}};var nt=a(713);function at(e,t){const{dicomParser:r}=bt;if(e.elements.x7fe00010&&e.elements.x7fe00010.basicOffsetTable.length)return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t);if(function(e){return e.intString("x00280008")!==e.elements.x7fe00010.fragments.length}(e)){const n=r.createJPEGBasicOffsetTable(e,e.elements.x7fe00010);return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t,n)}const n=e.elements.x7fe00010.fragments,a=new nt.ByteStream(e.byteArrayParser,e.byteArray,e.elements.x7fe00010.dataOffset),o=(0,nt.readSequenceItem)(a);if("xfffee000"!==o.tag)throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";a.seek(o.length);const i=a.position;if(t+1>n.length)throw"dicomParser.readEncapsulatedPixelData: frame exceeds number of fragments";const s=i+n[t].offset+8,l=n[t].length;return new Uint8Array(a.byteArray.buffer.slice(a.byteArray.byteOffset+s,a.byteArray.byteOffset+s+l))}function ot(e,t){return e&1<<t}const it=function(e,t,r){const n=new Uint8Array(r);for(let a=0;a<r;a++){const r=e[Math.floor(a/8)+t],o=a%8;n[a]=ot(r,o)?1:0}return n};const st=function(e,t){const r=e.elements.x7fe00010||e.elements.x7fe00008,n=e.uint16("x00280100"),a=e.uint16("x00280010"),o=e.uint16("x00280011");let i=e.uint16("x00280002");"YBR_FULL_422"===e.string("x00280004")&&(i=2,console.warn("Using SamplesPerPixel of 2 for YBR_FULL_422 photometric interpretation.\n See http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.3.html for more information."));const s=r.dataOffset,l=a*o*i;let c;if(8===n){if(c=s+t*l,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+l))}if(16===n){if(c=s+t*l*2,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+2*l))}if(1===n){if(c=s+t*l*.125,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return it(e.byteArray,c,l)}if(32===n){if(c=s+t*l*4,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+4*l))}throw new Error("unsupported pixel format")};const lt=function(e){const t=Fe(e),r=parseInt(t.url,10),n=rt.get(r);return new Promise(((e,t)=>{const r=new FileReader;r.onload=t=>{const r=t.target.result;e(r)},r.onerror=t,r.readAsArrayBuffer(n)}))};const ct=function(e,t=0){const r=e.elements.x7fe00010||e.elements.x7fe00008;return r?r.encapsulatedPixelData?at(e,t):st(e,t):null};function ut(e,t,r=0,n,a,o){const i=(new Date).getTime(),s={cancelFn:void 0,promise:void 0};return s.promise=new Promise(((l,c)=>{e.then((e=>{const u=ct(e,r),f=e.string("x00020010"),d=(new Date).getTime(),m=ke(t,u,f,a);!function(e,t){e.decache=function(){const e=Fe(t);ze.unload(e.url)}}(s,t),m.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=d-i,t.totalTimeInMS=r-i,void 0!==o&&void 0!==o.imageDoneCallback&&o.imageDoneCallback(t),l(t)}),(function(t){c({error:t,dataSet:e})}))}),(function(e){c({error:e})}))})),s}function ft(e){return"dicomweb"===e||"wadouri"===e?U:"dicomfile"===e?lt:void 0}function dt(e,t={}){const r=Fe(e);delete(t=Object.assign({},t)).loader;const n=ft(r.scheme);if(ze.isLoaded(r.url)){return function(e,t,r=0,n,a){const o=(new Date).getTime();return{promise:new Promise(((i,s)=>{const l=(new Date).getTime();let c;try{const n=ct(e,r),o=e.string("x00020010");c=ke(t,n,o,a)}catch(t){return void s({error:t,dataSet:e})}c.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=l-o,t.totalTimeInMS=r-o,i(t)}),s)})),cancelFn:void 0}}(ze.get(r.url,n,e),e,r.pixelDataFrame,r.url,t)}return ut(ze.load(r.url,n,e),e,r.frame,r.url,t)}const mt={metaData:{getImagePixelModule:Le,getLUTs:Oe,getModalityLUTOutputPixelRepresentation:Re,getNumberValues:Me,metaDataProvider:et},dataSetCacheManager:ze,fileManager:rt,getEncapsulatedImageFrame:at,getUncompressedImageFrame:st,loadFileRequest:lt,loadImageFromPromise:ut,getLoaderForScheme:ft,loadImage:dt,parseImageId:Fe,unpackBinaryFrame:it,register:function(e){e.registerImageLoader("dicomweb",dt),e.registerImageLoader("wadouri",dt),e.registerImageLoader("dicomfile",dt),e.metaData.addProvider(et)}};const gt=function(e){Ee.register(e),mt.register(e)};let pt,ht;const xt={set cornerstone(e){pt=e,gt(pt)},get cornerstone(){if(!pt){if(pt=window&&window.cornerstone,!pt)throw new Error("cornerstoneDICOMImageLoader requires a copy of Cornerstone to work properly. Please add cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; to your application.");gt(pt)}return pt},set dicomParser(e){ht=e},get dicomParser(){if(!ht){if(!window||!window.dicomParser)throw new Error("cornerstoneDICOMImageLoader requires a copy of dicomParser to work properly. Please add cornerstoneDICOMImageLoader.external.dicomParser = dicomParser; to your application.");ht=window.dicomParser}return ht}},bt=xt;function wt(e,t){const r=e.length,n=new Uint8ClampedArray(r);for(let a=0;a<r;++a)n[a]=e[a]>>t;return n}function yt(e,t,r){const n=e.columns*e.rows,a=e.pixelData;let o=e.redPaletteColorLookupTableData;o||(o=bt.cornerstone.metaData.get("imagePixelModule",e.imageId)?.redPaletteColorLookupTableData);let i=e.greenPaletteColorLookupTableData;i||(i=bt.cornerstone.metaData.get("imagePixelModule",e.imageId)?.greenPaletteColorLookupTableData);let s=e.bluePaletteColorLookupTableData;if(s||(s=bt.cornerstone.metaData.get("imagePixelModule",e.imageId)?.bluePaletteColorLookupTableData),!o||!i||!s)throw new Error("The image does not have a complete color palette. R, G, and B palette data are required.");const l=e.redPaletteColorLookupTableData.length;let c=0,u=0;const f=e.redPaletteColorLookupTableDescriptor[1],d=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,m=wt(o,d),g=wt(i,d),p=wt(s,d);if(r)for(let e=0;e<n;++e){let e=a[c++];e<f?e=0:e>f+l-1?e=l-1:e-=f,t[u++]=m[e],t[u++]=g[e],t[u++]=p[e],t[u++]=255}else for(let e=0;e<n;++e){let e=a[c++];e<f?e=0:e>f+l-1?e=l-1:e-=f,t[u++]=m[e],t[u++]=g[e],t[u++]=p[e]}}const kt=function(e){M(e)};const Tt=function(e,t){if(t=t||e.transferSyntax,8===e.bitsAllocated&&"1.2.840.10008.1.2.4.50"===t&&(3===e.samplesPerPixel||4===e.samplesPerPixel))return!0},Dt={convertRGBColorByPixel:e,convertRGBColorByPlane:t,convertYBRFullByPixel:r,convertYBRFullByPlane:n,convertPALETTECOLOR:yt,wadouri:mt,wadors:Ee,configure:kt,convertColorSpace:X,createImage:ke,decodeImageFrame:pe,decodeJPEGBaseline8BitColor:J,getImageFrame:he,getPixelData:z,getMinMax:H,isColorImage:xe,isJPEGBaseline8BitColor:Tt,webWorkerManager:de,internal:B,external:xt}})(),o})()));
102341
+ !function(e,t){ true?module.exports=t(__webpack_require__(92136),__webpack_require__(45561)):0}(this,((e,t)=>(()=>{"use strict";var r={578:(e,t,r)=>{const n=r(823),a=r(187),o=r(592),i=r(604),s=r(249),l=r(968),c=Object.prototype.toString,{Z_NO_FLUSH:u,Z_FINISH:f,Z_OK:d,Z_STREAM_END:m,Z_NEED_DICT:g,Z_STREAM_ERROR:h,Z_DATA_ERROR:p,Z_MEM_ERROR:x}=r(684);function b(e){this.options=a.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;let r=n.inflateInit2(this.strm,t.windowBits);if(r!==d)throw new Error(i[r]);if(this.header=new l,n.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=o.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=n.inflateSetDictionary(this.strm,t.dictionary),r!==d)))throw new Error(i[r])}function w(e,t){const r=new b(t);if(r.push(e),r.err)throw r.msg||i[r.err];return r.result}b.prototype.push=function(e,t){const r=this.strm,a=this.options.chunkSize,i=this.options.dictionary;let s,l,b;if(this.ended)return!1;for(l=t===~~t?t:!0===t?f:u,"[object ArrayBuffer]"===c.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(a),r.next_out=0,r.avail_out=a),s=n.inflate(r,l),s===g&&i&&(s=n.inflateSetDictionary(r,i),s===d?s=n.inflate(r,l):s===p&&(s=g));r.avail_in>0&&s===m&&r.state.wrap>0&&0!==e[r.next_in];)n.inflateReset(r),s=n.inflate(r,l);switch(s){case h:case p:case g:case x:return this.onEnd(s),this.ended=!0,!1}if(b=r.avail_out,r.next_out&&(0===r.avail_out||s===m))if("string"===this.options.to){let e=o.utf8border(r.output,r.next_out),t=r.next_out-e,n=o.buf2string(r.output,e);r.next_out=t,r.avail_out=a-t,t&&r.output.set(r.output.subarray(e,e+t),0),this.onData(n)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(s!==d||0!==b){if(s===m)return s=n.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},b.prototype.onData=function(e){this.chunks.push(e)},b.prototype.onEnd=function(e){e===d&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=a.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.exports.Hq=function(e,t){return(t=t||{}).raw=!0,w(e,t)},r(684)},187:e=>{const t=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);e.exports.assign=function(e){const r=Array.prototype.slice.call(arguments,1);for(;r.length;){const n=r.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const r in n)t(n,r)&&(e[r]=n[r])}}return e},e.exports.flattenChunks=e=>{let t=0;for(let r=0,n=e.length;r<n;r++)t+=e[r].length;const r=new Uint8Array(t);for(let t=0,n=0,a=e.length;t<a;t++){let a=e[t];r.set(a,n),n+=a.length}return r}},592:e=>{let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){t=!1}const r=new Uint8Array(256);for(let e=0;e<256;e++)r[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;r[254]=r[254]=1,e.exports.string2buf=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,r,n,a,o,i=e.length,s=0;for(a=0;a<i;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),s+=r<128?1:r<2048?2:r<65536?3:4;for(t=new Uint8Array(s),o=0,a=0;o<s;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),r<128?t[o++]=r:r<2048?(t[o++]=192|r>>>6,t[o++]=128|63&r):r<65536?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t};e.exports.buf2string=(e,n)=>{const a=n||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,n));let o,i;const s=new Array(2*a);for(i=0,o=0;o<a;){let t=e[o++];if(t<128){s[i++]=t;continue}let n=r[t];if(n>4)s[i++]=65533,o+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&o<a;)t=t<<6|63&e[o++],n--;n>1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,r)=>{if(r<65534&&e.subarray&&t)return String.fromCharCode.apply(null,e.length===r?e:e.subarray(0,r));let n="";for(let t=0;t<r;t++)n+=String.fromCharCode(e[t]);return n})(s,i)},e.exports.utf8border=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+r[e[n]]>t?n:t}},693:e=>{e.exports=(e,t,r,n)=>{let a=65535&e|0,o=e>>>16&65535|0,i=0;for(;0!==r;){i=r>2e3?2e3:r,r-=i;do{a=a+t[n++]|0,o=o+a|0}while(--i);a%=65521,o%=65521}return a|o<<16|0}},684:e=>{e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},863:e=>{const t=new Uint32Array((()=>{let e,t=[];for(var r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t})());e.exports=(e,r,n,a)=>{const o=t,i=a+n;e^=-1;for(let t=a;t<i;t++)e=e>>>8^o[255&(e^r[t])];return-1^e}},968:e=>{e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},365:e=>{const t=16209;e.exports=function(e,r){let n,a,o,i,s,l,c,u,f,d,m,g,h,p,x,b,w,y,k,T,S,D,v,P;const I=e.state;n=e.next_in,v=e.input,a=n+(e.avail_in-5),o=e.next_out,P=e.output,i=o-(r-e.avail_out),s=o+(e.avail_out-257),l=I.dmax,c=I.wsize,u=I.whave,f=I.wnext,d=I.window,m=I.hold,g=I.bits,h=I.lencode,p=I.distcode,x=(1<<I.lenbits)-1,b=(1<<I.distbits)-1;e:do{g<15&&(m+=v[n++]<<g,g+=8,m+=v[n++]<<g,g+=8),w=h[m&x];t:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,0===y)P[o++]=65535&w;else{if(!(16&y)){if(0==(64&y)){w=h[(65535&w)+(m&(1<<y)-1)];continue t}if(32&y){I.mode=16191;break e}e.msg="invalid literal/length code",I.mode=t;break e}k=65535&w,y&=15,y&&(g<y&&(m+=v[n++]<<g,g+=8),k+=m&(1<<y)-1,m>>>=y,g-=y),g<15&&(m+=v[n++]<<g,g+=8,m+=v[n++]<<g,g+=8),w=p[m&b];r:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,!(16&y)){if(0==(64&y)){w=p[(65535&w)+(m&(1<<y)-1)];continue r}e.msg="invalid distance code",I.mode=t;break e}if(T=65535&w,y&=15,g<y&&(m+=v[n++]<<g,g+=8,g<y&&(m+=v[n++]<<g,g+=8)),T+=m&(1<<y)-1,T>l){e.msg="invalid distance too far back",I.mode=t;break e}if(m>>>=y,g-=y,y=o-i,T>y){if(y=T-y,y>u&&I.sane){e.msg="invalid distance too far back",I.mode=t;break e}if(S=0,D=d,0===f){if(S+=c-y,y<k){k-=y;do{P[o++]=d[S++]}while(--y);S=o-T,D=P}}else if(f<y){if(S+=c+f-y,y-=f,y<k){k-=y;do{P[o++]=d[S++]}while(--y);if(S=0,f<k){y=f,k-=y;do{P[o++]=d[S++]}while(--y);S=o-T,D=P}}}else if(S+=f-y,y<k){k-=y;do{P[o++]=d[S++]}while(--y);S=o-T,D=P}for(;k>2;)P[o++]=D[S++],P[o++]=D[S++],P[o++]=D[S++],k-=3;k&&(P[o++]=D[S++],k>1&&(P[o++]=D[S++]))}else{S=o-T;do{P[o++]=P[S++],P[o++]=P[S++],P[o++]=P[S++],k-=3}while(k>2);k&&(P[o++]=P[S++],k>1&&(P[o++]=P[S++]))}break}}break}}while(n<a&&o<s);k=g>>3,n-=k,g-=k<<3,m&=(1<<g)-1,e.next_in=n,e.next_out=o,e.avail_in=n<a?a-n+5:5-(n-a),e.avail_out=o<s?s-o+257:257-(o-s),I.hold=m,I.bits=g}},823:(e,t,r)=>{const n=r(693),a=r(863),o=r(365),i=r(446),{Z_FINISH:s,Z_BLOCK:l,Z_TREES:c,Z_OK:u,Z_STREAM_END:f,Z_NEED_DICT:d,Z_STREAM_ERROR:m,Z_DATA_ERROR:g,Z_MEM_ERROR:h,Z_BUF_ERROR:p,Z_DEFLATED:x}=r(684),b=16180,w=16190,y=16191,k=16192,T=16194,S=16199,D=16200,v=16206,P=16209,I=16210,E=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function A(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const _=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<b||t.mode>16211?1:0},L=e=>{if(_(e))return m;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=b,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,u},C=e=>{if(_(e))return m;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,L(e)},O=(e,t)=>{let r;if(_(e))return m;const n=e.state;return t<0?(r=0,t=-t):(r=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?m:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,C(e))},M=(e,t)=>{if(!e)return m;const r=new A;e.state=r,r.strm=e,r.window=null,r.mode=b;const n=O(e,t);return n!==u&&(e.state=null),n};let R,F,B=!0;const U=e=>{if(B){R=new Int32Array(512),F=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(i(1,e.lens,0,288,R,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;i(2,e.lens,0,32,F,0,e.work,{bits:5}),B=!1}e.lencode=R,e.lenbits=9,e.distcode=F,e.distbits=5},N=(e,t,r,n)=>{let a;const o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new Uint8Array(o.wsize)),n>=o.wsize?(o.window.set(t.subarray(r-o.wsize,r),0),o.wnext=0,o.whave=o.wsize):(a=o.wsize-o.wnext,a>n&&(a=n),o.window.set(t.subarray(r-n,r-n+a),o.wnext),(n-=a)?(o.window.set(t.subarray(r-n,r),0),o.wnext=n,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=a))),0};e.exports.inflateReset=C,e.exports.inflateReset2=O,e.exports.inflateResetKeep=L,e.exports.inflateInit=e=>M(e,15),e.exports.inflateInit2=M,e.exports.inflate=(e,t)=>{let r,A,L,C,O,M,R,F,B,j,$,G,V,W,q,Z,Y,z,H,Q,X,K,J=0;const ee=new Uint8Array(4);let te,re;const ne=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(_(e)||!e.output||!e.input&&0!==e.avail_in)return m;r=e.state,r.mode===y&&(r.mode=k),O=e.next_out,L=e.output,R=e.avail_out,C=e.next_in,A=e.input,M=e.avail_in,F=r.hold,B=r.bits,j=M,$=R,K=u;e:for(;;)switch(r.mode){case b:if(0===r.wrap){r.mode=k;break}for(;B<16;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(2&r.wrap&&35615===F){0===r.wbits&&(r.wbits=15),r.check=0,ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0),F=0,B=0,r.mode=16181;break}if(r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&F)<<8)+(F>>8))%31){e.msg="incorrect header check",r.mode=P;break}if((15&F)!==x){e.msg="unknown compression method",r.mode=P;break}if(F>>>=4,B-=4,X=8+(15&F),0===r.wbits&&(r.wbits=X),X>15||X>r.wbits){e.msg="invalid window size",r.mode=P;break}r.dmax=1<<r.wbits,r.flags=0,e.adler=r.check=1,r.mode=512&F?16189:y,F=0,B=0;break;case 16181:for(;B<16;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(r.flags=F,(255&r.flags)!==x){e.msg="unknown compression method",r.mode=P;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=P;break}r.head&&(r.head.text=F>>8&1),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16182;case 16182:for(;B<32;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.head&&(r.head.time=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,ee[2]=F>>>16&255,ee[3]=F>>>24&255,r.check=a(r.check,ee,4,0)),F=0,B=0,r.mode=16183;case 16183:for(;B<16;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.head&&(r.head.xflags=255&F,r.head.os=F>>8),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16184;case 16184:if(1024&r.flags){for(;B<16;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.length=F,r.head&&(r.head.extra_len=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0}else r.head&&(r.head.extra=null);r.mode=16185;case 16185:if(1024&r.flags&&(G=r.length,G>M&&(G=M),G&&(r.head&&(X=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(A.subarray(C,C+G),X)),512&r.flags&&4&r.wrap&&(r.check=a(r.check,A,G,C)),M-=G,C+=G,r.length-=G),r.length))break e;r.length=0,r.mode=16186;case 16186:if(2048&r.flags){if(0===M)break e;G=0;do{X=A[C+G++],r.head&&X&&r.length<65536&&(r.head.name+=String.fromCharCode(X))}while(X&&G<M);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,A,G,C)),M-=G,C+=G,X)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=16187;case 16187:if(4096&r.flags){if(0===M)break e;G=0;do{X=A[C+G++],r.head&&X&&r.length<65536&&(r.head.comment+=String.fromCharCode(X))}while(X&&G<M);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,A,G,C)),M-=G,C+=G,X)break e}else r.head&&(r.head.comment=null);r.mode=16188;case 16188:if(512&r.flags){for(;B<16;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(4&r.wrap&&F!==(65535&r.check)){e.msg="header crc mismatch",r.mode=P;break}F=0,B=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=y;break;case 16189:for(;B<32;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}e.adler=r.check=E(F),F=0,B=0,r.mode=w;case w:if(0===r.havedict)return e.next_out=O,e.avail_out=R,e.next_in=C,e.avail_in=M,r.hold=F,r.bits=B,d;e.adler=r.check=1,r.mode=y;case y:if(t===l||t===c)break e;case k:if(r.last){F>>>=7&B,B-=7&B,r.mode=v;break}for(;B<3;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}switch(r.last=1&F,F>>>=1,B-=1,3&F){case 0:r.mode=16193;break;case 1:if(U(r),r.mode=S,t===c){F>>>=2,B-=2;break e}break;case 2:r.mode=16196;break;case 3:e.msg="invalid block type",r.mode=P}F>>>=2,B-=2;break;case 16193:for(F>>>=7&B,B-=7&B;B<32;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if((65535&F)!=(F>>>16^65535)){e.msg="invalid stored block lengths",r.mode=P;break}if(r.length=65535&F,F=0,B=0,r.mode=T,t===c)break e;case T:r.mode=16195;case 16195:if(G=r.length,G){if(G>M&&(G=M),G>R&&(G=R),0===G)break e;L.set(A.subarray(C,C+G),O),M-=G,C+=G,R-=G,O+=G,r.length-=G;break}r.mode=y;break;case 16196:for(;B<14;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(r.nlen=257+(31&F),F>>>=5,B-=5,r.ndist=1+(31&F),F>>>=5,B-=5,r.ncode=4+(15&F),F>>>=4,B-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=P;break}r.have=0,r.mode=16197;case 16197:for(;r.have<r.ncode;){for(;B<3;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.lens[ne[r.have++]]=7&F,F>>>=3,B-=3}for(;r.have<19;)r.lens[ne[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,te={bits:r.lenbits},K=i(0,r.lens,0,19,r.lencode,0,r.work,te),r.lenbits=te.bits,K){e.msg="invalid code lengths set",r.mode=P;break}r.have=0,r.mode=16198;case 16198:for(;r.have<r.nlen+r.ndist;){for(;J=r.lencode[F&(1<<r.lenbits)-1],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(q<=B);){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(Y<16)F>>>=q,B-=q,r.lens[r.have++]=Y;else{if(16===Y){for(re=q+2;B<re;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(F>>>=q,B-=q,0===r.have){e.msg="invalid bit length repeat",r.mode=P;break}X=r.lens[r.have-1],G=3+(3&F),F>>>=2,B-=2}else if(17===Y){for(re=q+3;B<re;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}F>>>=q,B-=q,X=0,G=3+(7&F),F>>>=3,B-=3}else{for(re=q+7;B<re;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}F>>>=q,B-=q,X=0,G=11+(127&F),F>>>=7,B-=7}if(r.have+G>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=P;break}for(;G--;)r.lens[r.have++]=X}}if(r.mode===P)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=P;break}if(r.lenbits=9,te={bits:r.lenbits},K=i(1,r.lens,0,r.nlen,r.lencode,0,r.work,te),r.lenbits=te.bits,K){e.msg="invalid literal/lengths set",r.mode=P;break}if(r.distbits=6,r.distcode=r.distdyn,te={bits:r.distbits},K=i(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,te),r.distbits=te.bits,K){e.msg="invalid distances set",r.mode=P;break}if(r.mode=S,t===c)break e;case S:r.mode=D;case D:if(M>=6&&R>=258){e.next_out=O,e.avail_out=R,e.next_in=C,e.avail_in=M,r.hold=F,r.bits=B,o(e,$),O=e.next_out,L=e.output,R=e.avail_out,C=e.next_in,A=e.input,M=e.avail_in,F=r.hold,B=r.bits,r.mode===y&&(r.back=-1);break}for(r.back=0;J=r.lencode[F&(1<<r.lenbits)-1],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(q<=B);){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(Z&&0==(240&Z)){for(z=q,H=Z,Q=Y;J=r.lencode[Q+((F&(1<<z+H)-1)>>z)],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(z+q<=B);){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}F>>>=z,B-=z,r.back+=z}if(F>>>=q,B-=q,r.back+=q,r.length=Y,0===Z){r.mode=16205;break}if(32&Z){r.back=-1,r.mode=y;break}if(64&Z){e.msg="invalid literal/length code",r.mode=P;break}r.extra=15&Z,r.mode=16201;case 16201:if(r.extra){for(re=r.extra;B<re;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.length+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=16202;case 16202:for(;J=r.distcode[F&(1<<r.distbits)-1],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(q<=B);){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(0==(240&Z)){for(z=q,H=Z,Q=Y;J=r.distcode[Q+((F&(1<<z+H)-1)>>z)],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(z+q<=B);){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}F>>>=z,B-=z,r.back+=z}if(F>>>=q,B-=q,r.back+=q,64&Z){e.msg="invalid distance code",r.mode=P;break}r.offset=Y,r.extra=15&Z,r.mode=16203;case 16203:if(r.extra){for(re=r.extra;B<re;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.offset+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=P;break}r.mode=16204;case 16204:if(0===R)break e;if(G=$-R,r.offset>G){if(G=r.offset-G,G>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=P;break}G>r.wnext?(G-=r.wnext,V=r.wsize-G):V=r.wnext-G,G>r.length&&(G=r.length),W=r.window}else W=L,V=O-r.offset,G=r.length;G>R&&(G=R),R-=G,r.length-=G;do{L[O++]=W[V++]}while(--G);0===r.length&&(r.mode=D);break;case 16205:if(0===R)break e;L[O++]=r.length,R--,r.mode=D;break;case v:if(r.wrap){for(;B<32;){if(0===M)break e;M--,F|=A[C++]<<B,B+=8}if($-=R,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,L,$,O-$):n(r.check,L,$,O-$)),$=R,4&r.wrap&&(r.flags?F:E(F))!==r.check){e.msg="incorrect data check",r.mode=P;break}F=0,B=0}r.mode=16207;case 16207:if(r.wrap&&r.flags){for(;B<32;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(4&r.wrap&&F!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=P;break}F=0,B=0}r.mode=16208;case 16208:K=f;break e;case P:K=g;break e;case I:return h;default:return m}return e.next_out=O,e.avail_out=R,e.next_in=C,e.avail_in=M,r.hold=F,r.bits=B,(r.wsize||$!==e.avail_out&&r.mode<P&&(r.mode<v||t!==s))&&N(e,e.output,e.next_out,$-e.avail_out)?(r.mode=I,h):(j-=e.avail_in,$-=e.avail_out,e.total_in+=j,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,L,$,e.next_out-$):n(r.check,L,$,e.next_out-$)),e.data_type=r.bits+(r.last?64:0)+(r.mode===y?128:0)+(r.mode===S||r.mode===T?256:0),(0===j&&0===$||t===s)&&K===u&&(K=p),K)},e.exports.inflateEnd=e=>{if(_(e))return m;let t=e.state;return t.window&&(t.window=null),e.state=null,u},e.exports.inflateGetHeader=(e,t)=>{if(_(e))return m;const r=e.state;return 0==(2&r.wrap)?m:(r.head=t,t.done=!1,u)},e.exports.inflateSetDictionary=(e,t)=>{const r=t.length;let a,o,i;return _(e)?m:(a=e.state,0!==a.wrap&&a.mode!==w?m:a.mode===w&&(o=1,o=n(o,t,r,0),o!==a.check)?g:(i=N(e,t,r,r),i?(a.mode=I,h):(a.havedict=1,u)))},e.exports.inflateInfo="pako inflate (from Nodeca project)"},446:e=>{const t=15,r=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),n=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),a=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),o=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);e.exports=(e,i,s,l,c,u,f,d)=>{const m=d.bits;let g,h,p,x,b,w,y=0,k=0,T=0,S=0,D=0,v=0,P=0,I=0,E=0,A=0,_=null;const L=new Uint16Array(16),C=new Uint16Array(16);let O,M,R,F=null;for(y=0;y<=t;y++)L[y]=0;for(k=0;k<l;k++)L[i[s+k]]++;for(D=m,S=t;S>=1&&0===L[S];S--);if(D>S&&(D=S),0===S)return c[u++]=20971520,c[u++]=20971520,d.bits=1,0;for(T=1;T<S&&0===L[T];T++);for(D<T&&(D=T),I=1,y=1;y<=t;y++)if(I<<=1,I-=L[y],I<0)return-1;if(I>0&&(0===e||1!==S))return-1;for(C[1]=0,y=1;y<t;y++)C[y+1]=C[y]+L[y];for(k=0;k<l;k++)0!==i[s+k]&&(f[C[i[s+k]]++]=k);if(0===e?(_=F=f,w=20):1===e?(_=r,F=n,w=257):(_=a,F=o,w=0),A=0,k=0,y=T,b=u,v=D,P=0,p=-1,E=1<<D,x=E-1,1===e&&E>852||2===e&&E>592)return 1;for(;;){O=y-P,f[k]+1<w?(M=0,R=f[k]):f[k]>=w?(M=F[f[k]-w],R=_[f[k]-w]):(M=96,R=0),g=1<<y-P,h=1<<v,T=h;do{h-=g,c[b+(A>>P)+h]=O<<24|M<<16|R|0}while(0!==h);for(g=1<<y-1;A&g;)g>>=1;if(0!==g?(A&=g-1,A+=g):A=0,k++,0==--L[y]){if(y===S)break;y=i[s+f[k]]}if(y>D&&(A&x)!==p){for(0===P&&(P=D),b+=T,v=y-P,I=1<<v;v+P<S&&(I-=L[v+P],!(I<=0));)v++,I<<=1;if(E+=1<<v,1===e&&E>852||2===e&&E>592)return 1;p=A&x,c[p]=D<<24|v<<16|b-u|0}}return 0!==A&&(c[b+A]=y-P<<24|64<<16|0),d.bits=D,0}},604:e=>{e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},249:e=>{e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},464:t=>{t.exports=e},713:e=>{e.exports=t}},n={};function a(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,a),o.exports}a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})();var o={};return(()=>{function e(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must be defined");if(e.length%3!=0)throw new Error(`decodeRGB: rgbBuffer length ${e.length} must be divisible by 3`);const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++)t[o++]=e[a++],t[o++]=e[a++],t[o++]=e[a++],t[o++]=255;else t.set(e)}function t(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must be defined");if(e.length%3!=0)throw new Error(`decodeRGB: rgbBuffer length ${e.length} must be divisible by 3`);const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++],t[a++]=255;else for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++]}function r(e,t,r){if(void 0===e)throw new Error("convertYBRFullByPixel: ybrBuffer must be defined");if(e.length%3!=0)throw new Error(`convertYBRFullByPixel: ybrBuffer length ${e.length} must be divisible by 3`);const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128),t[o++]=255}else for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128)}}function n(e,t,r){if(void 0===e)throw new Error("convertYBRFullByPlane: ybrBuffer must be defined");if(e.length%3!=0)throw new Error(`convertYBRFullByPlane: ybrBuffer length ${e.length} must be divisible by 3`);const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128),t[a++]=255}else for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128)}}a.r(o),a.d(o,{configure:()=>kt,convertColorSpace:()=>X,convertPALETTECOLOR:()=>yt,convertRGBColorByPixel:()=>e,convertRGBColorByPlane:()=>t,convertYBRFullByPixel:()=>r,convertYBRFullByPlane:()=>n,createImage:()=>ye,decodeImageFrame:()=>he,decodeJPEGBaseline8BitColor:()=>J,default:()=>St,external:()=>xt,getImageFrame:()=>pe,getMinMax:()=>H,getPixelData:()=>z,internal:()=>U,isColorImage:()=>xe,isJPEGBaseline8BitColor:()=>Tt,wadors:()=>Ie,wadouri:()=>dt,webWorkerManager:()=>de});const i=function(e,t,r){return t=t||0,e&&e.Value?e.Value.length<=t?r:e.Value[t]:r};const s=function(e,t,r){const n=i(e,t,r);if(void 0!==n)return parseFloat(n)};const l=function(e,t){const r=i(e,t);if(void 0!==r)return parseFloat(r)};const c=function(e,t){if(!e)return;if(!e.Value)return;if(!Array.isArray(e.Value))return;if(t&&e.Value.length<t)return;const r=[];for(let t=0;t<e.Value.length;t++)r.push(parseFloat(e.Value[t]));return r};function u(e){const t=e.indexOf(":");return e.substring(t+1)}function f(e,t=!0){return e&&e.Value?e.Value[0]&&t?e.Value[0]:e.Value:e}function d(e,t,r){return{shared:(t?Object.values(t[0]):[]).map((e=>e[0])).filter((e=>void 0!==e&&"object"==typeof e)),perFrame:(e?Object.values(e[r-1]):[]).map((e=>e.Value[0])).filter((e=>void 0!==e&&"object"==typeof e))}}function m(e){let{52009230:t,52009229:r,"00280008":n,...a}=e;return t=f(t,!1),r=f(r,!1),n=f(n),{PerFrameFunctionalGroupsSequence:t,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:a}}function g(e){const t=e.indexOf("/frames/")+8,r=e.slice(0,t),n=parseInt(e.slice(t),10);return{metadata:p[`${r}1`],frame:n}}const h={_retrieveMultiframeMetadata:g,retrieveMultiframeMetadata:function(e){return g(u(e))},isMultiframe:function(e){const t=i(e["00280008"]);return t&&t>1}};let p=[],x={};const b={add:function(e,t){const r=u(e);t.isMultiframe=h.isMultiframe(t),p[r]=t},get:function(e){const t=u(e),r=p[t];if(r&&!r?.isMultiframe)return r;const n=x[t];if(n)return n;const a=h._retrieveMultiframeMetadata(t);if(!a||!a.metadata)return;const{metadata:o,frame:i}=a;if(o){const e=function(e,t){const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:n,NumberOfFrames:a,rest:o}=m(t);if(r||a>1){const{shared:i,perFrame:s}=d(r,n,e),l=Object.assign(t,{frameNumber:e});return[...i,...s].forEach((e=>{Object.entries(e).forEach((([e,t])=>{l[e]=t}))})),Object.assign(o,{"00280008":a},l)}return t}(i,o);return x[t]=e,e}},remove:function(e){const t=u(e);p[t]=void 0,x[t]=void 0},purge:function(){p=[],x={}}};function w(e){return"RECON TOMO"===e||"RECON GATED TOMO"===e}function y(e){return i(e["00080060"]).includes("NM")}function k(e,t){const r=f(e["00080008"],!1);if(r)return r[t]}function T(e){let t=c(e["00200037"],6);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=f(e["00540022"]);r&&(t=c(r["00200037"],6))}return t}(e)),t}function S(e){let t=c(e["00200032"],3);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=f(e["00540022"]);r&&(t=c(r["00200032"],3))}return t}(e)),t}function D(e,t,r){const n={};for(const a of r)try{const r=t(a,e);if(r){const e={};for(const t in r)if(t in r){e[v(t)]=r[t]}Object.assign(n,e)}}catch(e){console.error(`Error retrieving ${a} data:`,e)}return n}const v=e=>e.charAt(0).toUpperCase()+e.slice(1),P=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function I(e,t){const r=c(e[t]);return r?r[0]:null}const E=function(e){return e?.Value?.length?Array.isArray(e.Value)?e.Value:"object"==typeof e.Value?(console.warn("Warning: Value should be an array, but an object was found. Encapsulating the object in an array."),[e.Value]):[]:[]};function A(e){const t=E(e["00186011"]);if(!t||!t.length)return null;return t.map((e=>{const t=I(e,"0018602C"),r=I(e,"0018602E"),n=I(e,"00186024"),a=I(e,"00186026");return{regionLocationMinY0:I(e,"0018601A"),regionLocationMaxY1:I(e,"0018601E"),regionLocationMinX0:I(e,"00186018"),regionLocationMaxX1:I(e,"0018601C"),referencePixelX0:I(e,"00186020"),referencePixelY0:I(e,"00186022"),physicalDeltaX:t,physicalDeltaY:r,physicalUnitsXDirection:n,physicalUnitsYDirection:a,referencePhysicalPixelValueY:I(e,"0018602A"),referencePhysicalPixelValueX:I(e,"00186028"),regionSpatialFormat:I(e,"00186012"),regionDataType:I(e,"00186014"),regionFlags:I(e,"00186016"),transducerFrequency:I(e,"00186030")}}))}function _(e,t){return{transferSyntaxUID:i(t["00020010"])||i(t["00083002"])}}const L=function e(t,r){const{MetadataModules:n}=xt.cornerstone.Enums,{dicomParser:a}=xt;if(t===n.MULTIFRAME){const{metadata:e,frame:t}=h.retrieveMultiframeMetadata(r);if(!e)return;const{PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,NumberOfFrames:o}=m(e);if(n||o>1){const{shared:e,perFrame:r}=d(n,a,t);return{NumberOfFrames:o,PerFrameFunctionalInformation:r,SharedFunctionalInformation:e}}return{NumberOfFrames:o}}const o=b.get(r);if(o){if(t===n.GENERAL_STUDY)return{studyDescription:i(o["00081030"]),studyDate:a.parseDA(i(o["00080020"])),studyTime:a.parseTM(i(o["00080030"],0,"")),accessionNumber:i(o["00080050"])};if(t===n.GENERAL_SERIES)return{modality:i(o["00080060"]),seriesInstanceUID:i(o["0020000E"]),seriesNumber:l(o["00200011"]),studyInstanceUID:i(o["0020000D"]),seriesDate:a.parseDA(i(o["00080021"])),seriesTime:a.parseTM(i(o["00080031"],0,"")),acquisitionDate:a.parseDA(i(o["00080022"])),acquisitionTime:a.parseTM(i(o["00080032"],0,""))};if(t===n.GENERAL_IMAGE)return{sopInstanceUID:i(o["00080018"]),instanceNumber:l(o["00200013"]),lossyImageCompression:i(o["00282110"]),lossyImageCompressionRatio:l(o["00282112"]),lossyImageCompressionMethod:i(o["00282114"])};if(t===n.PATIENT)return{patientID:i(o["00100020"]),patientName:i(o["00100010"])};if(t===n.PATIENT_STUDY)return{patientAge:l(o["00101010"]),patientSize:l(o["00101020"]),patientSex:i(o["00100040"]),patientWeight:l(o["00101030"])};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=i(o["00080060"]),t=k(o,2);return{modality:e,imageType:i(o["00080008"]),imageSubType:t,imageOrientationPatient:T(o),imagePositionPatient:S(o),sliceThickness:l(o["00180050"]),spacingBetweenSlices:l(o["00180088"]),pixelSpacing:c(o["00280030"],2),numberOfFrames:l(o["00280008"]),isNMReconstructable:w(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=T(o),t=S(o),r=c(o["00280030"],2);let n=null,a=null;r&&(a=r[0],n=r[1]);let s=null,u=null;return e&&(s=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],u=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:i(o["00200052"]),rows:l(o["00280010"]),columns:l(o["00280011"]),imageOrientationPatient:e,rowCosines:s,columnCosines:u,imagePositionPatient:t,sliceThickness:l(o["00180050"]),sliceLocation:l(o["00201041"]),pixelSpacing:r,rowPixelSpacing:a,columnPixelSpacing:n}}if(t===n.ULTRASOUND_ENHANCED_REGION)return A(o);if(t===n.CALIBRATION){if("US"===i(o["00080060"])){return{sequenceOfUltrasoundRegions:A(o)}}}if(t===n.IMAGE_URL)return function(e,t){const{transferSyntaxUID:r}=_(e,t),n=xt.cornerstone.utilities.isVideoTransferSyntax(r),a=e.substring(7),o=a.replace("/frames/","/thumbnail/");let i=a.replace("/frames/","/rendered/");n&&(i=i.replace("/rendered/1","/rendered"));return{isVideo:n,rendered:i,thumbnail:o}}(r,o);if(t===n.CINE)return function(e,t){const r=i(t["00180040"]);return{cineRate:r,numberOfFrames:l(t["00280008"])}}(0,o);if(t===n.IMAGE_PIXEL)return{samplesPerPixel:l(o["00280002"]),photometricInterpretation:i(o["00280004"]),rows:l(o["00280010"]),columns:l(o["00280011"]),bitsAllocated:l(o["00280100"]),bitsStored:l(o["00280101"]),highBit:i(o["00280102"]),pixelRepresentation:l(o["00280103"]),planarConfiguration:l(o["00280006"]),pixelAspectRatio:i(o["00280034"]),smallestPixelValue:l(o["00280106"]),largestPixelValue:l(o["00280107"]),redPaletteColorLookupTableDescriptor:c(o["00281101"]),greenPaletteColorLookupTableDescriptor:c(o["00281102"]),bluePaletteColorLookupTableDescriptor:c(o["00281103"]),redPaletteColorLookupTableData:c(o["00281201"]),greenPaletteColorLookupTableData:c(o["00281202"]),bluePaletteColorLookupTableData:c(o["00281203"])};if(t===n.VOI_LUT)return{windowCenter:c(o["00281050"],1),windowWidth:c(o["00281051"],1)};if(t===n.MODALITY_LUT)return{rescaleIntercept:l(o["00281052"]),rescaleSlope:l(o["00281053"]),rescaleType:i(o["00281054"])};if(t===n.SOP_COMMON)return{sopClassUID:i(o["00080016"]),sopInstanceUID:i(o["00080018"])};if(t===n.PET_ISOTOPE){const e=i(o["00540016"]);if(void 0===e)return;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:a.parseTM(i(e["00181072"],0,"")),radiopharmaceuticalStartDateTime:i(e["00181078"],0,""),radionuclideTotalDose:l(e["00181074"]),radionuclideHalfLife:l(e["00181075"])}}}return t===n.OVERLAY_PLANE?function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=i(e[`${n}3000`]);if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.Value[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:l(e[`${n}0010`]),columns:l(e[`${n}0011`]),type:i(e[`${n}0040`]),x:l(e[`${n}0050`],1)-1,y:l(e[`${n}0050`],0)-1,pixelData:o,description:i(e[`${n}0022`]),label:i(e[`${n}1500`]),roiArea:i(e[`${n}1301`]),roiMean:i(e[`${n}1302`]),roiStandardDeviation:i(e[`${n}1303`])})}return{overlays:t}}(o):"transferSyntax"===t?_(r,o):t===n.PET_SERIES?{correctedImage:i(o["00280051"]),units:i(o["00541001"]),decayCorrection:i(o["00541102"])}:t===n.PET_IMAGE?{frameReferenceTime:l(o["00541300"]),actualFrameDuration:l(o["00181242"])}:"instance"===t?D(r,e,P):void 0}};function C(e,t,r){if(r+e.length>t.length)return!1;let n=r;for(let r=0;r<e.length;r++)if(e[r]!==t[n++])return!1;return!0}const O=function(e,t,r){r=r||0;const n=function(e){const t=new Uint8Array(e.length);for(let r=0,n=e.length;r<n;r++)t[r]=e.charCodeAt(r);return t}(t);for(let t=r;t<e.length;t++)if(n[0]===e[t]&&C(n,e,t))return t;return-1};let M={open(e,t){e.open("get",t,!0)},beforeSend(){},beforeProcessing:e=>Promise.resolve(e.response),imageCreated(){},strict:!1,decodeConfig:{convertFloatPixelDataToInt:!0,use16BitDataType:!1}};function R(e){M=Object.assign(M,e)}function F(){return M}const B=function(e,t,r={},n={}){const{cornerstone:a}=xt,o=F(),i=e=>{if("function"==typeof o.errorInterceptor){const t=new Error("request failed");t.request=e,t.response=e.response,t.status=e.status,o.errorInterceptor(t)}},s=new XMLHttpRequest,l=new Promise(((l,c)=>{o.open(s,e,r,n);const u=o.beforeSend(s,t,r,n);s.responseType="arraybuffer";const f=Object.assign({},r,u);Object.keys(f).forEach((function(t){null!==f[t]&&("Accept"===t&&-1!==e.indexOf("accept=")||s.setRequestHeader(t,f[t]))})),n.deferred={resolve:l,reject:c},n.url=e,n.imageId=t,s.onloadstart=function(r){o.onloadstart&&o.onloadstart(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadstart",i)},s.onloadend=function(r){o.onloadend&&o.onloadend(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadend",i)},s.onreadystatechange=function(e){o.onreadystatechange?o.onreadystatechange(e,n):4===s.readyState&&(200===s.status||206===s.status?o.beforeProcessing(s).then(l).catch((()=>{i(s),c(s)})):(i(s),c(s)))},s.onprogress=function(e){const t=e.loaded;let r,a;e.lengthComputable&&(r=e.total,a=Math.round(t/r*100)),o.onprogress&&o.onprogress(e,n)},s.onerror=function(){i(s),c(s)},s.onabort=function(){i(s),c(s)},s.send()}));return l.xhr=s,l},U={xhrRequest:B,setOptions:R,getOptions:F};var N=a(464);const{ImageQualityStatus:j}=N.Enums;function $(e,t,r){r||={};const n=new Uint8Array(t),a=!!r?.isPartial;if(-1===e.indexOf("multipart"))return{contentType:e,imageQualityStatus:a?j.SUBRESOLUTION:j.FULL_RESOLUTION,pixelData:n};let{tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l}=r;if(o||=O(n,"\r\n\r\n"),-1===o)throw new Error("invalid response - no multipart mime header");if(!s){const e=function(e,t,r){t=t||0,r=r||e.length-t;let n="";for(let a=t;a<t+r;a++)n+=String.fromCharCode(e[a]);return n}(n,0,o);if(i=e.split("\r\n"),s=function(e){for(let t=0;t<e.length;t++)if("--"===e[t].substr(0,2))return e[t]}(i),!s)throw new Error("invalid response - no boundary marker")}const c=o+4,u=O(n,s,c);if(-1===u&&!a)throw new Error("invalid response - terminating boundary not found");return l||=function(e){for(let t=0;t<e.length;t++)if("Content-Type:"===e[t].substr(0,13))return e[t].substr(13).trim()}(i),r.tokenIndex=o,r.boundary=s,r.responseHeaders=i,r.multipartContentType=l,r.isPartial=-1===u,{contentType:l,extractDone:!a||-1!==u,tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l,pixelData:t.slice(c,u-2)}}const{ImageQualityStatus:G}=N.Enums;function V(e,t=!0){return t?e.imageQualityStatus??G.FULL_RESOLUTION:G.SUBRESOLUTION}const{ProgressiveIterator:W}=N.utilities;function q(e,t,r={},n={}){const a=F(),{retrieveOptions:o={},streamingData:i={}}=n,s=o.minChunkSize||131072,l=new W("streamRequest");return l.generate((async(n,l)=>{const c=Object.assign({},r);Object.keys(c).forEach((function(t){null===c[t]&&(c[t]=void 0),"Accept"===t&&-1!==e.indexOf("accept=")&&(c[t]=void 0)}));try{const a=await fetch(e,{headers:r,signal:void 0});if(200!==a.status)throw new Error(`Couldn't retrieve ${e} got status ${a.status}`);const l=a.body.getReader(),c=a.headers,u=c.get("content-type"),f=Number(c.get("Content-Length"));let d=!1,m=i.encodedData,g=i.lastSize||0;for(i.isPartial=!0;!d;){const{done:r,value:a}=await l.read();if(m=Z(m,a),!m){if(d)throw new Error(`Done but no image frame available ${t}`);continue}if(d=r||m.byteLength===f,!d&&m.length<g+s)continue;g=m.length,i.isPartial=!r;const c=$(u,m,i),h=V(o,d),p={url:e,imageId:t,...c,percentComplete:r?100:100*c.pixelData?.length/f,imageQualityStatus:h,done:d};n.add(p,d)}}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}})(),console.error(e),l(e)}})),l.getNextPromise()}function Z(e,t){if(!e)return t;if(!t)return e;const r=new Uint8Array(e.length+t.length);return r.set(e,0),r.set(t,e.length),r}function Y(e,t,r={},n={}){const a=F(),{retrieveOptions:o={},streamingData:i}=n,s=i.chunkSize||function(e,t,r){const n=t[r];if("function"!=typeof n)return n;const a=b.get(e);return n(a,e)}(t,o,"chunkSize")||65536,l=new Promise((async(t,n)=>{const l=Object.assign({},r);Object.keys(l).forEach((function(e){null!==l[e]&&void 0!==l[e]||delete l[e]}));try{i.encodedData||(i.chunkSize=s,i.rangesFetched=0);const r=function(e,t){const{totalBytes:r,encodedData:n,chunkSize:a=65536}=e,{rangeIndex:o=0}=t;if(!(-1!==o||r&&n))return[0,""];if(-1===o||n?.byteLength>r-a)return[n?.byteLength||0,""];return[n?.byteLength||0,a*(o+1)-1]}(i,o),{encodedData:n,responseHeaders:a}=await async function(e,t,r,n){r&&(t=Object.assign(t,{Range:`bytes=${r[0]}-${r[1]}`}));let{encodedData:a}=n;if(r[1]&&a?.byteLength>r[1])return n;const o=await fetch(e,{headers:t,signal:void 0}),i=await o.arrayBuffer(),s=new Uint8Array(i),{status:l}=o;let c;a?(c=new Uint8Array(a.length+s.length),c.set(a,0),c.set(s,a.length),n.rangesFetched=1):(c=new Uint8Array(s.length),c.set(s,0),n.rangesFetched++);n.encodedData=a=c,n.responseHeaders=o.headers;const u=o.headers.get("Content-Range");u?n.totalBytes=Number(u.split("/")[1]):206===l&&r?""===r[1]||a?.length<r[1]?n.totalBytes=a.byteLength:n.totalBytes=Number.MAX_SAFE_INTEGER:n.totalBytes=a?.byteLength;return n}(e,l,r,i),c=a.get("content-type"),{totalBytes:u}=i,f=u===n.byteLength,d=$(c,n,{isPartial:!0}),m=V(o,f||d.extractDone);t({...d,imageQualityStatus:m,percentComplete:d.extractDone?100:100*s/u})}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}else console.warn("rangeRequest:Caught",e)})(e),console.error(e),n(e)}}));return l}const z=function(e,t,r="application/octet-stream",n){const{streamingData:a,retrieveOptions:o={}}=n||{},i={Accept:r};let s=o.urlArguments?`${e}${-1===e.indexOf("?")?"?":"&"}${o.urlArguments}`:e;if(o.framesPath&&(s=s.replace("/frames/",o.framesPath)),a?.url!==s&&(n.streamingData={url:s}),void 0!==o.rangeIndex)return Y(s,t,i,n);if(o.streaming)return q(s,t,i,n);const l=B(s,t,i),{xhr:c}=l;return l.then((function(e){const t=$(c.getResponseHeader("Content-Type")||"application/octet-stream",new Uint8Array(e));return t.imageQualityStatus=V(o,!0),t}))};const H=function(e){let t,r=e[0],n=e[0];const a=e.length;for(let o=1;o<a;o++)t=e[o],r=Math.min(r,t),n=Math.max(n,t);return{min:r,max:n}};function Q(r,n,a){0===r.planarConfiguration?e(r.pixelData,n,a):t(r.pixelData,n,a)}function X(e,t,a){if("RGB"===e.photometricInterpretation)Q(e,t,a);else if("YBR_RCT"===e.photometricInterpretation)Q(e,t,a);else if("YBR_ICT"===e.photometricInterpretation)Q(e,t,a);else if("PALETTE COLOR"===e.photometricInterpretation)yt(e,t,a);else if("YBR_FULL_422"===e.photometricInterpretation)!function(e,t,r){if(void 0===e)throw new Error("convertYBRFull422ByPixel: ybrBuffer must be defined");if(e.length%2!=0)throw new Error(`convertYBRFull422ByPixel: ybrBuffer length ${e.length} must be divisible by 2`);const n=e.length/2;let a=0,o=0;if(r)for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=255,t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128),t[o++]=255}else for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128)}}(e.pixelData,t,a);else{if("YBR_FULL"!==e.photometricInterpretation)throw new Error(`No color space conversion for photometric interpretation ${e.photometricInterpretation}`);!function(e,t,a){0===e.planarConfiguration?r(e.pixelData,t,a):n(e.pixelData,t,a)}(e,t,a)}}function K(e){return function(e){let t;try{return decodeURIComponent(escape(e))}catch(r){if(t=r,t instanceof URIError)return e;throw t}}(String.fromCharCode.apply(null,Array.prototype.slice.apply(new Uint8Array(e))))}const J=function(e,t,r){const n=(new Date).getTime(),a=new Blob([t],{type:"image/jpeg"});return new Promise(((t,o)=>{const i=new FileReader;void 0===i.readAsBinaryString?i.readAsArrayBuffer(a):i.readAsBinaryString(a),i.onload=function(){const a=new Image;a.onload=function(){r.height=a.height,r.width=a.width,e.rows=a.height,e.columns=a.width;const o=r.getContext("2d");o.drawImage(this,0,0);const i=o.getImageData(0,0,a.width,a.height),s=(new Date).getTime();e.pixelData=new Uint8Array(i.data.buffer),e.imageData=i,e.decodeTimeInMS=s-n;const l=H(e.pixelData);e.smallestPixelValue=l.min,e.largestPixelValue=l.max,e.pixelDataLength=e.pixelData.length,t(e)},a.onerror=function(e){o(e)},void 0===i.readAsBinaryString?a.src=`data:image/jpeg;base64,${window.btoa(K(i.result))}`:a.src=`data:image/jpeg;base64,${window.btoa(i.result)}`},i.onerror=e=>{o(e)}}))};function ee(){return new Worker(a.p+"index.worker.f4bda803c15bc6359d5f.worker.js")}let te=0;const re=[],ne=[],ae=F(),oe={maxWebWorkers:navigator.hardwareConcurrency||1,startWebWorkersOnDemand:!0,webWorkerTaskPaths:[],taskConfiguration:{decodeTask:{initializeCodecsOnStartup:!1,strict:ae.strict}}};let ie;const se={maxWebWorkers:0,numWebWorkers:0,numTasksQueued:0,numTasksExecuting:0,numTasksCompleted:0,totalTaskTimeInMS:0,totalTimeDelayedInMS:0};function le(){if(re.length){for(let e=0;e<ne.length;e++)if("ready"===ne[e].status){ne[e].status="busy";const t=re.shift();t.start=(new Date).getTime();const r=(new Date).getTime();return se.totalTimeDelayedInMS+=r-t.added,ne[e].task=t,ne[e].worker.postMessage({taskType:t.taskType,workerIndex:e,data:t.data},t.transferList),void se.numTasksExecuting++}ne.length<ie.maxWebWorkers&&ue()}}function ce(e){if("initialize"===e.data.taskType)ne[e.data.workerIndex].status="ready",le();else{const t=ne[e.data.workerIndex].task.start,r="success"===e.data.status?"resolve":"reject";try{ne[e.data.workerIndex].task.deferred[r](e.data.result)}catch(e){console.warn("Caught error delivering response",e)}ne[e.data.workerIndex].task=void 0,se.numTasksExecuting--,ne[e.data.workerIndex].status="ready",se.numTasksCompleted++;const n=(new Date).getTime();se.totalTaskTimeInMS+=n-t,le()}}function ue(){if(ne.length>=ie.maxWebWorkers)return;const e=new ee;ne.push({worker:e,status:"initializing"}),e.addEventListener("message",ce),e.postMessage({taskType:"initialize",workerIndex:ne.length-1,config:ie})}function fe(e){if(ie=e=e||oe,ie.maxWebWorkers=ie.maxWebWorkers||navigator.hardwareConcurrency||1,!ie.startWebWorkersOnDemand)for(let e=0;e<ie.maxWebWorkers;e++)ue()}const de={initialize:fe,loadWebWorkerTask:function(e,t){ie.webWorkerTaskPaths.push(e),t&&(ie.taskConfiguration=Object.assign(ie.taskConfiguration,t));for(let t=0;t<ne.length;t++)ne[t].worker.postMessage({taskType:"loadWebWorkerTask",workerIndex:ne.length-1,sourcePath:e,config:ie})},addTask:function(e,t,r=0,n){ie||fe();let a={resolve:void 0,reject:void 0};const o=new Promise(((e,t)=>{a={resolve:e,reject:t}}));let i;for(i=0;i<re.length&&!(re[i].priority<r);i++);const s=te++;return re.splice(i,0,{taskId:s,taskType:e,status:"ready",added:(new Date).getTime(),data:t,deferred:a,priority:r,transferList:n}),le(),{taskId:s,promise:o}},getStatistics:function(){return se.maxWebWorkers=ie.maxWebWorkers,se.numWebWorkers=ne.length,se.numTasksQueued=re.length,se},setTaskPriority:function(e,t=0){for(let r=0;r<re.length;r++)if(re[r].taskId===e){const e=re.splice(r,1)[0];for(e.priority=t,r=0;r<re.length&&!(re[r].priority<t);r++);return re.splice(r,0,e),!0}return!1},cancelTask:function(e,t){for(let r=0;r<re.length;r++)if(re[r].taskId===e){return re.splice(r,1).deferred.reject(t),!0}return!1},webWorkers:ne,terminate:function(){for(let e=0;e<ne.length;e++)ne[e].worker.terminate();ne.length=0,ie=void 0}};var me=a(578);function ge(e,t,r,n,a){const o={...n};delete o.loader,delete o.streamingData;const i=o.priority||void 0,s=o.transferPixelData?[r.buffer]:void 0;return de.addTask("decodeTask",{imageFrame:e,transferSyntax:t,pixelData:r,options:o,decodeConfig:a},i,s).promise}window.pako={inflateRaw:me.Hq};const he=function(e,t,r,n,a={},o){switch(t){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":case"1.2.840.10008.1.2.2":case"1.2.840.10008.1.2.1.99":case"1.2.840.10008.1.2.5":case"1.2.840.10008.1.2.4.51":case"1.2.840.10008.1.2.4.57":case"1.2.840.10008.1.2.4.70":case"1.2.840.10008.1.2.4.80":case"1.2.840.10008.1.2.4.81":case"1.2.840.10008.1.2.4.90":case"1.2.840.10008.1.2.4.91":case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":return ge(e,t,r,a,o);case"1.2.840.10008.1.2.4.50":return 8!==e.bitsAllocated||3!==e.samplesPerPixel&&4!==e.samplesPerPixel?ge(e,t,r,a,o):J(e,r,n)}return Promise.reject(new Error(`No decoder for transfer syntax ${t}`))};const pe=function(e){const{cornerstone:t}=xt,r=t.metaData.get("imagePixelModule",e);return{samplesPerPixel:r.samplesPerPixel,photometricInterpretation:r.photometricInterpretation,planarConfiguration:r.planarConfiguration,rows:r.rows,columns:r.columns,bitsAllocated:r.bitsAllocated,bitsStored:r.bitsStored,pixelRepresentation:r.pixelRepresentation,smallestPixelValue:r.smallestPixelValue,largestPixelValue:r.largestPixelValue,redPaletteColorLookupTableDescriptor:r.redPaletteColorLookupTableDescriptor,greenPaletteColorLookupTableDescriptor:r.greenPaletteColorLookupTableDescriptor,bluePaletteColorLookupTableDescriptor:r.bluePaletteColorLookupTableDescriptor,redPaletteColorLookupTableData:r.redPaletteColorLookupTableData,greenPaletteColorLookupTableData:r.greenPaletteColorLookupTableData,bluePaletteColorLookupTableData:r.bluePaletteColorLookupTableData,pixelData:void 0,imageId:e}};function xe(e){return"RGB"===e||"PALETTE COLOR"===e||"YBR_FULL"===e||"YBR_FULL_422"===e||"YBR_PARTIAL_422"===e||"YBR_PARTIAL_420"===e||"YBR_RCT"===e||"YBR_ICT"===e}let be="";function we(e){const t=function(e,t){let r;return Number.isInteger(e)&&Number.isInteger(t)&&(e>=0?t<=255?r=Uint8Array:t<=65535&&(r=Uint16Array):e>=-128&&t<=127?r=Int8Array:e>=-32768&&t<=32767&&(r=Int16Array)),r||Float32Array}(e.smallestPixelValue,e.largestPixelValue);if(!t)throw new Error("Could not apply a typed array to the pixel data");{const r=new t(e.pixelData);e.pixelData=r}}const ye=function(e,t,r,n={}){const a=n.useRGBA;if(n.preScale={enabled:!(!n.preScale||void 0===n.preScale.enabled)&&n.preScale.enabled},!t?.length)return Promise.reject(new Error("The pixel data is missing"));const{cornerstone:o}=xt,{MetadataModules:i}=o.Enums,s=document.createElement("canvas"),l=pe(e);if(l.decodeLevel=n.decodeLevel,n.allowFloatRendering=o.canRenderFloatTextures(),n.preScale.enabled){const t=function(e,t){const r=e.get("modalityLutModule",t)||{},n=e.get("generalSeriesModule",t)||{},{modality:a}=n,o={rescaleSlope:r.rescaleSlope,rescaleIntercept:r.rescaleIntercept,modality:a},i=e.get("scalingModule",t)||{};return{...o,..."PT"===a&&{suvbw:i.suvbw}}}(o.metaData,e);t&&(n.preScale={...n.preScale,scalingParameters:t})}n.isSharedArrayBuffer=n.targetBuffer?.arrayBuffer&&n.targetBuffer.arrayBuffer instanceof SharedArrayBuffer;const{decodeConfig:c}=F();c.use16BitDataType=!!(n&&"Uint16Array"===n.targetBuffer?.type||"Int16Array"===n.targetBuffer?.type)||(n.useNativeDataType||c.use16BitDataType),Object.keys(l).forEach((e=>{("function"==typeof l[e]||l[e]instanceof Promise)&&delete l[e]}));const u=he(l,r,t,s,n,c),{use16BitDataType:f}=c,d=xe(l.photometricInterpretation);return new Promise(((t,r)=>{u.then((function(r){if(n.skipCreateImage)return t(r);let l=!1;if(n.targetBuffer&&n.targetBuffer.type&&!d){const{arrayBuffer:e,type:t,offset:a=0,length:o}=n.targetBuffer,i=r.pixelDataLength,s=a,c=null!=o?o:i-s,u={Uint8Array,Uint16Array:f?Uint16Array:void 0,Int16Array:f?Int16Array:void 0,Float32Array};if(c!==r.pixelDataLength)throw new Error(`target array for image does not have the same length (${c}) as the decoded image length (${r.pixelDataLength}).`);const d=u[t],m=e?new d(e,s,c):new d(r.pixelData);if(c!==r.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");r.pixelData=m,l=!0}l||we(r);const c=o.metaData.get(i.IMAGE_PLANE,e)||{},u=o.metaData.get(i.VOI_LUT,e)||{},m=o.metaData.get(i.MODALITY_LUT,e)||{},g=o.metaData.get(i.SOP_COMMON,e)||{},h=o.metaData.get(i.CALIBRATION,e)||{},{rows:p,columns:x}=r;if(d){if(function(e){if(void 0===e)return!1;const{rows:t,columns:r,photometricInterpretation:n,pixelDataLength:a}=e;return a!==4*r*t&&(n.endsWith("420")?a===(3*Math.ceil(r/2)+Math.floor(r/2))*t:n.endsWith("422")?a===(3*Math.ceil(r/2)+Math.floor(r/2))*Math.ceil(t/2)+Math.floor(t/2)*r:"RGB"!==n)}(r)){s.height=r.rows,s.width=r.columns;let e=s.getContext("2d").createImageData(r.columns,r.rows);a||(e={...e,data:new Uint8ClampedArray(r.samplesPerPixel*r.columns*r.rows)}),X(r,e.data,a),r.imageData=e,r.pixelData=e.data,r.pixelDataLength=e.data.length}else if(!a&&r.pixelDataLength===4*p*x){const e=new Uint8Array(r.pixelData.length/4*3);r.pixelData=function(e,t){const r=e.length/4;let n=0,a=0;for(let o=0;o<r;o++)t[a++]=e[n++],t[a++]=e[n++],t[a++]=e[n++],n++;return t}(r.pixelData,e),r.pixelDataLength=r.pixelData.length}const e=H(r.pixelData);r.smallestPixelValue=e.min,r.largestPixelValue=e.max}const b={imageId:e,color:d,calibration:h,columnPixelSpacing:c.columnPixelSpacing,columns:r.columns,height:r.rows,preScale:r.preScale,intercept:m.rescaleIntercept?m.rescaleIntercept:0,slope:m.rescaleSlope?m.rescaleSlope:1,invert:"MONOCHROME1"===r.photometricInterpretation,minPixelValue:r.smallestPixelValue,maxPixelValue:r.largestPixelValue,rowPixelSpacing:c.rowPixelSpacing,rows:r.rows,sizeInBytes:r.pixelData.byteLength,width:r.columns,windowCenter:u.windowCenter?u.windowCenter[0]:void 0,windowWidth:u.windowWidth?u.windowWidth[0]:void 0,voiLUTFunction:u.voiLUTFunction?u.voiLUTFunction:void 0,decodeTimeInMS:r.decodeTimeInMS,floatPixelData:void 0,imageFrame:r,rgba:d&&a,getPixelData:()=>r.pixelData,getCanvas:void 0,numComps:void 0};var w;if(b.color&&(b.getCanvas=function(){if(be===e)return s;const t=b.columns,n=b.rows;s.height=n,s.width=t;const a=s.getContext("2d"),o=a.createImageData(t,n),i=r.pixelData;if(i.length===t*n*4)for(let e=0;e<i.length;e++)o.data[e]=i[e];else if(i.length===t*n*3){let e=0;for(let t=0;t<i.length;t+=3)o.data[e++]=i[t],o.data[e++]=i[t+1],o.data[e++]=i[t+2],o.data[e++]=255}return r.pixelData=o.data,r.pixelDataLength=o.data.length,r.imageData=o,a.putImageData(r.imageData,0,0),be=e,s}),m.modalityLUTSequence&&m.modalityLUTSequence.length>0&&("1.2.840.10008.5.1.4.1.1.12.1"!==(w=g.sopClassUID)&&"1.2.840.10008.5.1.4.1.1.12.2.1"!==w)&&(b.modalityLUT=m.modalityLUTSequence[0]),u.voiLUTSequence&&u.voiLUTSequence.length>0&&(b.voiLUT=u.voiLUTSequence[0]),b.color&&(b.windowWidth=256,b.windowCenter=128),void 0===b.windowCenter||void 0===b.windowWidth){const e=b.imageFrame.minAfterScale,t=b.imageFrame.maxAfterScale;b.windowWidth=t-e,b.windowCenter=(t+e)/2}t(b)}),r)}))},{ProgressiveIterator:ke}=N.utilities,{ImageQualityStatus:Te}=N.Enums,Se=new Set(["3.2.840.10008.1.2.4.96","1.2.840.10008.1.2.4.202","1.2.840.10008.1.2.4.203"]);function De(e){const t="1.2.840.10008.1.2";if(!e)return t;const r=e.split(";"),n={};r.forEach((e=>{const t=e.split("=");if(2!==t.length)return;const r=t[1].trim().replace(/"/g,"");n[t[0].trim()]=r}));const a={"image/jpeg":"1.2.840.10008.1.2.4.50","image/x-dicom-rle":"1.2.840.10008.1.2.5","image/x-jls":"1.2.840.10008.1.2.4.80","image/jls":"1.2.840.10008.1.2.4.80","image/jll":"1.2.840.10008.1.2.4.70","image/jp2":"1.2.840.10008.1.2.4.90","image/jpx":"1.2.840.10008.1.2.4.92","image/jphc":"3.2.840.10008.1.2.4.96","image/jxl":"1.2.840.10008.1.2.4.140"};return n["transfer-syntax"]?n["transfer-syntax"]:e&&!Object.keys(n).length&&a[e]?a[e]:n.type&&a[n.type]?a[n.type]:a[e]?a[e]:t}function ve(e,t=4){const r=e/100-.02;return r>1/4?Math.min(t,0):r>1/16?Math.min(t,1):r>1/64?Math.min(t,2):Math.min(t,3)}const Pe=function(e,t={}){const r=xt.cornerstone.imageRetrievalPoolManager,n=(new Date).getTime(),a=new ke("decompress"),o=t.requestType||"interaction",i=t.additionalDetails||{imageId:e},s=void 0===t.priority?5:t.priority,l=t.addToBeginning||!1,c=e.substring(7);return r.addRequest(async function(e,r,o){a.generate((async a=>{const i=ke.as(z(e,r,o,t));let s=10;for await(const e of i){const{pixelData:o,imageQualityStatus:i=Te.FULL_RESOLUTION,percentComplete:l,done:c=!0,extractDone:u=!0}=e,f=De(e.contentType);if(!u&&!Se.has(f))continue;const d=e.decodeLevel??(i===Te.FULL_RESOLUTION?0:ve(l,t.retrieveOptions?.decodeLevel));if(c||!(s<=d))try{const e={...t,decodeLevel:d},l=await ye(r,o,f,e),u=(new Date).getTime();l.loadTimeInMS=u-n,l.transferSyntaxUID=f,l.imageQualityStatus=i,a.add(l,c),s=d}catch(e){if(u)throw console.warn("Couldn't decode",e),e}}}))}.bind(this,c,e,"multipart/related; type=application/octet-stream; transfer-syntax=*"),o,i,s,l),{promise:a.getDonePromise(),cancelFn:void 0}};const Ie={metaData:{getNumberString:s,getNumberValue:l,getNumberValues:c,getValue:i,metaDataProvider:L},findIndexOfString:O,getPixelData:z,loadImage:Pe,metaDataManager:b,register:function(e){e.registerImageLoader("wadors",Pe),e.metaData.addProvider(L)}};function Ee(e,t){if(e.elements[t]&&6===e.elements[t].length)return[e.uint16(t,0),e.uint16(t,1),e.uint16(t,2)]}function Ae(e,t,r){const n=[],a=e.elements[t];for(let o=0;o<r[0];o++)16===r[2]?n[o]=e.uint16(t,o):n[o]=e.byteArray[o+a.dataOffset];return n}const _e=function(e){const t={samplesPerPixel:e.uint16("x00280002"),photometricInterpretation:e.string("x00280004"),rows:e.uint16("x00280010"),columns:e.uint16("x00280011"),bitsAllocated:e.uint16("x00280100"),bitsStored:e.uint16("x00280101"),highBit:e.uint16("x00280102"),pixelRepresentation:e.uint16("x00280103"),planarConfiguration:e.uint16("x00280006"),pixelAspectRatio:e.string("x00280034")};return function(e,t){0===e.uint16("x00280103")?(t.smallestPixelValue=e.uint16("x00280106"),t.largestPixelValue=e.uint16("x00280107")):(t.smallestPixelValue=e.int16("x00280106"),t.largestPixelValue=e.int16("x00280107"))}(e,t),"PALETTE COLOR"===t.photometricInterpretation&&e.elements.x00281101&&function(e,t){t.redPaletteColorLookupTableDescriptor=Ee(e,"x00281101"),t.greenPaletteColorLookupTableDescriptor=Ee(e,"x00281102"),t.bluePaletteColorLookupTableDescriptor=Ee(e,"x00281103"),0===t.redPaletteColorLookupTableDescriptor[0]&&(t.redPaletteColorLookupTableDescriptor[0]=65536,t.greenPaletteColorLookupTableDescriptor[0]=65536,t.bluePaletteColorLookupTableDescriptor[0]=65536);const r=t.redPaletteColorLookupTableDescriptor[0],n=e.elements.x00281201.length===r?8:16;t.redPaletteColorLookupTableDescriptor[2]!==n&&(t.redPaletteColorLookupTableDescriptor[2]=n,t.greenPaletteColorLookupTableDescriptor[2]=n,t.bluePaletteColorLookupTableDescriptor[2]=n),t.redPaletteColorLookupTableData=Ae(e,"x00281201",t.redPaletteColorLookupTableDescriptor),t.greenPaletteColorLookupTableData=Ae(e,"x00281202",t.greenPaletteColorLookupTableDescriptor),t.bluePaletteColorLookupTableData=Ae(e,"x00281203",t.bluePaletteColorLookupTableDescriptor)}(e,t),t};function Le(e,t){let r=t.uint16("x00283002",0);0===r&&(r=65535);let n=0;n=0===e?t.uint16("x00283002",1):t.int16("x00283002",1);const a={id:"1",firstValueMapped:n,numBitsPerEntry:t.uint16("x00283002",2),lut:[]};for(let n=0;n<r;n++)a.lut[n]=0===e?t.uint16("x00283006",n):t.int16("x00283006",n);return a}const Ce=function(e,t){if(!t||!t.items||!t.items.length)return;const r=[];for(let n=0;n<t.items.length;n++){const a=Le(e,t.items[n].dataSet);a&&r.push(a)}return r};const Oe=function(e){const t=e.string("x00080016");if("1.2.840.10008.5.1.4.1.1.2"===t||"1.2.840.10008.5.1.4.1.1.2.1"===t)return 1;const r=e.floatString("x00281052"),n=e.floatString("x00281053");if(void 0!==r&&void 0!==n){const t=function(e){const t=e.uint16("x00280103"),r=e.uint16("x00280101");return 0===t?0:-1<<r-1}(e);return t*n+r<0?1:0}return e.elements.x00283000&&e.elements.x00283000.length>0?0:e.uint16("x00280103")};const Me=function(e,t,r){const n=[],a=e.string(t);if(!a)return;const o=a.split("\\");if(!(r&&o.length<r)){for(let e=0;e<o.length;e++)n.push(parseFloat(o[e]));return n}};const Re=function(e){const t=e.indexOf(":");let r=e.substring(t+1);const n=r.indexOf("frame=");let a;if(-1!==n){const e=r.substring(n+6);a=parseInt(e,10),r=r.substring(0,n-1)}return{scheme:e.substring(0,t),url:r,frame:a,pixelDataFrame:void 0!==a?a-1:void 0}};function Fe(e){const{dicomParser:t}=xt;let r,n=t.parseDicom(e,{untilTag:"x7fe00010"});n.elements.x7fe00010||console.warn("Pixel data not found!");try{r=t.parseDicom(e)}catch(e){console.error(e),console.log("pixel data dataset:",e.dataSet),r=e.dataSet}return n.elements.x7fe00010=r.elements.x7fe00010,n=function(e){const t=e.elements.x7fe00010.fragments,r=e.byteArray.length;for(const e of t){const{position:t,length:n}=e;n>r-t&&(console.log(`Truncated fragment, changing fragment length from ${e.length} to ${r-t}`),e.length=r-t)}return e}(n),n}async function Be(e,t,r){const n=Fe(e),{uri:a,imageId:o,fileTotalLength:i}=r;return n.fetchMore=async function(s){const l=Object.assign({uri:a,imageId:o,fetchedLength:e.length,lengthToFetch:i-e.length},s),{fetchedLength:c,lengthToFetch:u}=l,{arrayBuffer:f}=await t(a,o,{byteRange:`${c}-${c+u}`}),d=new Uint8Array(f),m=new Uint8Array(n.byteArray.length+d.length);return m.set(n.byteArray),m.set(d,n.byteArray.length),Be(m,t,r)},n}function Ue(e,t,r){const n={};(t?Object.values(t.items[0].dataSet.elements):[]).map((e=>n[e.tag]=e));const a={};return(e?Object.values(e.items[r-1].dataSet.elements):[]).map((e=>a[e.tag]=e)),{shared:n,perFrame:a}}function Ne(e){if(!e)return;const{elements:t,...r}=e,{x52009230:n,x52009229:a,...o}=t;return{NumberOfFrames:e.intString("x00280008"),PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o,otherAttributtes:r}}function je(e){if(We[e])return We[e]}function $e(e){if(!e)return!1;const t=e.intString("x00280008");return t&&t>1}const Ge={_get:je,generateMultiframeWADOURIs:function(e){const t=[],r=je(e);if($e(r)){const n=r.intString("x00280008");for(let r=1;r<=n;r++)t.push(`${e}&frame=${r}`)}else t.push(e);return t},retrieveMultiframeDataset:function(e){const t=function(e){return e.indexOf("&frame=")}(e),r=-1===t?e:e.slice(0,t),n=parseInt(e.slice(t+7),10)||1;let a;return a=We[r]?We[r].dataSet:void 0,{dataSet:a,frame:n}},isMultiframeDataset:function(e){return $e(je(e))}};let Ve=0,We={},qe={};function Ze(){return{cacheSizeInBytes:Ve,numberOfDataSetsCached:Object.keys(We).length}}const Ye={isLoaded:function(e){return void 0!==We[e]},load:function(e,t=B,r){const{cornerstone:n,dicomParser:a}=xt;if(We[e])return new Promise((t=>{We[e].cacheCount++,t(We[e].dataSet)}));if(qe[e])return qe[e].cacheCount++,qe[e];const o=t(e,r),i=new Promise(((s,l)=>{o.then((async function(o){const c={isPartialContent:!1,fileTotalLength:null};if(!(o instanceof ArrayBuffer)){if(!o.arrayBuffer)return l(new Error("If not returning ArrayBuffer, must return object with `arrayBuffer` parameter"));c.isPartialContent=o.flags.isPartialContent,c.fileTotalLength=o.flags.fileTotalLength,o=o.arrayBuffer}const u=new Uint8Array(o);let f;try{f=c.isPartialContent?await Be(u,t,{uri:e,imageId:r,fileTotalLength:c.fileTotalLength}):a.parseDicom(u)}catch(e){return l(e)}We[e]={dataSet:f,cacheCount:i.cacheCount},Ve+=f.byteArray.length,s(f),n.triggerEvent(n.events,"datasetscachechanged",{uri:e,action:"loaded",cacheInfo:Ze()})}),l).then((()=>{delete qe[e]}),(()=>{delete qe[e]}))}));return i.cacheCount=1,qe[e]=i,i},unload:function(e){const{cornerstone:t}=xt;We[e]&&(We[e].cacheCount--,0===We[e].cacheCount&&(Ve-=We[e].dataSet.byteArray.length,delete We[e],t.triggerEvent(t.events,"datasetscachechanged",{uri:e,action:"unloaded",cacheInfo:Ze()})))},getInfo:Ze,purge:function(){We={},qe={},Ve=0},get:function(e){let t;if(e.includes("&frame=")){const{frame:r,dataSet:n}=Ge.retrieveMultiframeDataset(e);t=function(e,t){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o}=Ne(t);if(n||r>1){const{shared:r,perFrame:i}=Ue(n,a,e),s={elements:{...o,...r,...i}},l=Object.create(t);return Object.assign(l,s)}return t}(r,n)}else We[e]&&(t=We[e].dataSet);return t},update:function(e,t){const r=We[e];r?(Ve-=r.dataSet.byteArray.length,r.dataSet=t,Ve+=t.byteArray.length,xt.cornerstone.triggerEvent(xt.cornerstone.events,"datasetscachechanged",{uri:e,action:"updated",cacheInfo:Ze()})):console.error(`No loaded dataSet for uri ${e}`)}};function ze(e,t){const r=e.string("x00080008");if(r){const e=r.split("\\");if(e.length>t)return e[t]}}function He(e){let t=Me(e,"x00200037",6);return!t&&e.elements.x00209116&&(t=Me(e.elements.x00209116.items[0].dataSet,"x00200037",6)),t||(t=function(e){let t;const r=e.string("x00080060");if(r?.includes("NM")){const r=ze(e,2);r&&w(r)&&e.elements.x00540022&&(t=Me(e.elements.x00540022.items[0].dataSet,"x00200037",6))}return t}(e)),t}function Qe(e){let t=Me(e,"x00200032",3);return!t&&e.elements.x00209113&&(t=Me(e.elements.x00209113.items[0].dataSet,"x00200032",3)),t||(t=function(e){let t;const r=e.string("x00080060");if(r?.includes("NM")){const r=ze(e,2);r&&w(r)&&e.elements.x00540022&&(t=Me(e.elements.x00540022.items[0].dataSet,"x00200032",3))}return t}(e)),t}function Xe(e){let t=Me(e,"x00280030",2);return!t&&e.elements.x00289110&&(t=Me(e.elements.x00289110.items[0].dataSet,"x00280030",2)),t}function Ke(e){let t;return e.elements.x00180050?t=e.floatString("x00180050"):e.elements.x00289110&&e.elements.x00289110.items.length&&e.elements.x00289110.items[0].dataSet.elements.x00180050&&(t=e.elements.x00289110.items[0].dataSet.floatString("x00180050")),t}const Je=function e(t,r){const{MetadataModules:n}=xt.cornerstone.Enums,{dicomParser:a}=xt;if(Array.isArray(r))return;const o=Re(r);if(t===n.MULTIFRAME){const e=Ge.retrieveMultiframeDataset(o.url);if(!e.dataSet)return;const t=function(e,t){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a}=Ne(e);if(n||r>1){const{shared:e,perFrame:o}=Ue(n,a,t);return{NumberOfFrames:r,PerFrameFunctionalInformation:o,SharedFunctionalInformation:e}}return{NumberOfFrames:r}}(e.dataSet,e.frame);return t}let i=o.url;o.frame&&(i=`${i}&frame=${o.frame}`);const s=Ye.get(i);if(s){if(t===n.GENERAL_STUDY)return{studyDescription:s.string("x00081030"),studyDate:a.parseDA(s.string("x00080020")),studyTime:a.parseTM(s.string("x00080030")||""),accessionNumber:s.string("x00080050")};if(t===n.GENERAL_SERIES)return{modality:s.string("x00080060"),seriesInstanceUID:s.string("x0020000e"),seriesNumber:s.intString("x00200011"),studyInstanceUID:s.string("x0020000d"),seriesDate:a.parseDA(s.string("x00080021")),seriesTime:a.parseTM(s.string("x00080031")||""),acquisitionDate:a.parseDA(s.string("x00080022")),acquisitionTime:a.parseTM(s.string("x00080032")||"")};if(t===n.GENERAL_IMAGE)return{sopInstanceUID:s.string("x00080018"),instanceNumber:s.intString("x00200013"),lossyImageCompression:s.string("x00282110"),lossyImageCompressionRatio:s.floatString("x00282112"),lossyImageCompressionMethod:s.string("x00282114")};if(t===n.PATIENT)return{patientID:s.string("x00100020"),patientName:s.string("x00100010")};if(t===n.PATIENT_STUDY)return{patientAge:s.intString("x00101010"),patientSize:s.floatString("x00101020"),patientSex:s.string("x00100040"),patientWeight:s.floatString("x00101030")};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=s.string("x00080060"),t=ze(s,2);return{modality:e,imageType:s.string("x00080008"),imageSubType:t,imageOrientationPatient:He(s),imagePositionPatient:Qe(s),sliceThickness:Ke(s),pixelSpacing:Xe(s),numberOfFrames:s.uint16("x00280008"),isNMReconstructable:w(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=He(s),t=Qe(s),r=Xe(s),n=Ke(s);let a=null,o=null;r&&(o=r[0],a=r[1]);let i=null,l=null;return e&&(i=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],l=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:s.string("x00200052"),rows:s.uint16("x00280010"),columns:s.uint16("x00280011"),imageOrientationPatient:e,rowCosines:i,columnCosines:l,imagePositionPatient:t,sliceThickness:n,sliceLocation:s.floatString("x00201041"),pixelSpacing:r,rowPixelSpacing:o,columnPixelSpacing:a}}if(t===n.CINE)return{frameTime:s.floatString("x00181063")};if(t===n.IMAGE_PIXEL)return _e(s);if(t===n.VOI_LUT){const e=Oe(s);return{windowCenter:Me(s,"x00281050",1),windowWidth:Me(s,"x00281051",1),voiLUTSequence:Ce(e,s.elements.x00283010)}}if(t===n.MODALITY_LUT)return{rescaleIntercept:s.floatString("x00281052"),rescaleSlope:s.floatString("x00281053"),rescaleType:s.string("x00281054"),modalityLUTSequence:Ce(s.uint16("x00280103"),s.elements.x00283000)};if(t===n.SOP_COMMON)return{sopClassUID:s.string("x00080016"),sopInstanceUID:s.string("x00080018")};if(t===n.PET_ISOTOPE){const e=s.elements.x00540016;if(void 0===e)return;const t=e.items[0].dataSet;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:a.parseTM(t.string("x00181072")||""),radionuclideTotalDose:t.floatString("x00181074"),radionuclideHalfLife:t.floatString("x00181075")}}}if(t===n.OVERLAY_PLANE)return function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=e.elements[`${n}3000`];if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.byteArray[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:e.uint16(`${n}0010`),columns:e.uint16(`${n}0011`),type:e.string(`${n}0040`),x:e.int16(`${n}0050`,1)-1,y:e.int16(`${n}0050`,0)-1,pixelData:o,description:e.string(`${n}0022`),label:e.string(`${n}1500`),roiArea:e.string(`${n}1301`),roiMean:e.string(`${n}1302`),roiStandardDeviation:e.string(`${n}1303`)})}return{overlays:t}}(s);if("transferSyntax"===t){let e;try{e=s.string("x00020010")}catch(e){}return{transferSyntaxUID:e}}return t===n.PET_SERIES?{correctedImage:s.string("x00280051"),units:s.string("x00541001"),decayCorrection:s.string("x00541102")}:t===n.PET_IMAGE?{frameReferenceTime:s.floatString(s.string("x00541300")||""),actualFrameDuration:s.intString(s.string("x00181242"))}:"instance"===t?D(r,e,P):void 0}};let et=[];const tt={add:function(e){return"dicomfile:"+(et.push(e)-1)},get:function(e){return et[e]},remove:function(e){et[e]=void 0},purge:function(){et=[]}};var rt=a(713);function nt(e,t){const{dicomParser:r}=xt;if(e.elements.x7fe00010&&e.elements.x7fe00010.basicOffsetTable.length)return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t);if(function(e){return e.intString("x00280008")!==e.elements.x7fe00010.fragments.length}(e)){const n=r.createJPEGBasicOffsetTable(e,e.elements.x7fe00010);return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t,n)}const n=e.elements.x7fe00010.fragments,a=new rt.ByteStream(e.byteArrayParser,e.byteArray,e.elements.x7fe00010.dataOffset),o=(0,rt.readSequenceItem)(a);if("xfffee000"!==o.tag)throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";a.seek(o.length);const i=a.position;if(t+1>n.length)throw"dicomParser.readEncapsulatedPixelData: frame exceeds number of fragments";const s=i+n[t].offset+8,l=n[t].length;return new Uint8Array(a.byteArray.buffer.slice(a.byteArray.byteOffset+s,a.byteArray.byteOffset+s+l))}function at(e,t){return e&1<<t}const ot=function(e,t,r){const n=new Uint8Array(r);for(let a=0;a<r;a++){const r=e[Math.floor(a/8)+t],o=a%8;n[a]=at(r,o)?1:0}return n};const it=function(e,t){const r=e.elements.x7fe00010||e.elements.x7fe00008,n=e.uint16("x00280100"),a=e.uint16("x00280010"),o=e.uint16("x00280011");let i=e.uint16("x00280002");"YBR_FULL_422"===e.string("x00280004")&&(i=2,console.warn("Using SamplesPerPixel of 2 for YBR_FULL_422 photometric interpretation.\n See http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.3.html for more information."));const s=r.dataOffset,l=a*o*i;let c;if(8===n){if(c=s+t*l,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+l))}if(16===n){if(c=s+t*l*2,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+2*l))}if(1===n){if(c=s+t*l*.125,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return ot(e.byteArray,c,l)}if(32===n){if(c=s+t*l*4,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+4*l))}throw new Error("unsupported pixel format")};const st=function(e){const t=Re(e),r=parseInt(t.url,10),n=tt.get(r);return new Promise(((e,t)=>{const r=new FileReader;r.onload=t=>{const r=t.target.result;e(r)},r.onerror=t,r.readAsArrayBuffer(n)}))};const lt=function(e,t=0){const r=e.elements.x7fe00010||e.elements.x7fe00008;return r?r.encapsulatedPixelData?nt(e,t):it(e,t):null};function ct(e,t,r=0,n,a,o){const i=(new Date).getTime(),s={cancelFn:void 0,promise:void 0};return s.promise=new Promise(((l,c)=>{e.then((e=>{const u=lt(e,r),f=e.string("x00020010"),d=(new Date).getTime(),m=ye(t,u,f,a);!function(e,t){e.decache=function(){const e=Re(t);Ye.unload(e.url)}}(s,t),m.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=d-i,t.totalTimeInMS=r-i,void 0!==o&&void 0!==o.imageDoneCallback&&o.imageDoneCallback(t),l(t)}),(function(t){c({error:t,dataSet:e})}))}),(function(e){c({error:e})}))})),s}function ut(e){return"dicomweb"===e||"wadouri"===e?B:"dicomfile"===e?st:void 0}function ft(e,t={}){const r=Re(e);delete(t=Object.assign({},t)).loader;const n=ut(r.scheme);if(Ye.isLoaded(r.url)){return function(e,t,r=0,n,a){const o=(new Date).getTime();return{promise:new Promise(((i,s)=>{const l=(new Date).getTime();let c;try{const n=lt(e,r),o=e.string("x00020010");c=ye(t,n,o,a)}catch(t){return void s({error:t,dataSet:e})}c.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=l-o,t.totalTimeInMS=r-o,i(t)}),s)})),cancelFn:void 0}}(Ye.get(r.url,n,e),e,r.pixelDataFrame,r.url,t)}return ct(Ye.load(r.url,n,e),e,r.frame,r.url,t)}const dt={metaData:{getImagePixelModule:_e,getLUTs:Ce,getModalityLUTOutputPixelRepresentation:Oe,getNumberValues:Me,metaDataProvider:Je},dataSetCacheManager:Ye,fileManager:tt,getEncapsulatedImageFrame:nt,getUncompressedImageFrame:it,loadFileRequest:st,loadImageFromPromise:ct,getLoaderForScheme:ut,loadImage:ft,parseImageId:Re,unpackBinaryFrame:ot,register:function(e){e.registerImageLoader("dicomweb",ft),e.registerImageLoader("wadouri",ft),e.registerImageLoader("dicomfile",ft),e.metaData.addProvider(Je)}};const mt=function(e){Ie.register(e),dt.register(e)};let gt,ht;const pt={set cornerstone(e){gt=e,mt(gt)},get cornerstone(){if(!gt){if(gt=window&&window.cornerstone,!gt)throw new Error("cornerstoneDICOMImageLoader requires a copy of Cornerstone to work properly. Please add cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; to your application.");mt(gt)}return gt},set dicomParser(e){ht=e},get dicomParser(){if(!ht){if(!window||!window.dicomParser)throw new Error("cornerstoneDICOMImageLoader requires a copy of dicomParser to work properly. Please add cornerstoneDICOMImageLoader.external.dicomParser = dicomParser; to your application.");ht=window.dicomParser}return ht}},xt=pt;function bt(e,t){const r=e.length,n=new Uint8ClampedArray(r);for(let a=0;a<r;++a)n[a]=e[a]>>t;return n}function wt(e,t,r){const n=e[`${t}PaletteColorLookupTableData`];if(n)return Promise.resolve(n);const a=xt.cornerstone.metaData.get("imagePixelModule",e.imageId);return a&&"function"==typeof a.then?a.then((e=>e?e[`${t}PaletteColorLookupTableData`]:r)):Promise.resolve(a?a[`${t}PaletteColorLookupTableData`]:r)}function yt(e,t,r){const n=e.columns*e.rows,a=e.pixelData;Promise.all([wt(e,"red",null),wt(e,"green",null),wt(e,"blue",null)]).then((([o,i,s])=>{if(!o||!i||!s)throw new Error("The image does not have a complete color palette. R, G, and B palette data are required.");const l=o.length;let c=0,u=0;const f=e.redPaletteColorLookupTableDescriptor[1],d=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,m=bt(o,d),g=bt(i,d),h=bt(s,d);if(r)for(let e=0;e<n;++e){let e=a[c++];e<f?e=0:e>f+l-1?e=l-1:e-=f,t[u++]=m[e],t[u++]=g[e],t[u++]=h[e],t[u++]=255}else for(let e=0;e<n;++e){let e=a[c++];e<f?e=0:e>f+l-1?e=l-1:e-=f,t[u++]=m[e],t[u++]=g[e],t[u++]=h[e]}}))}const kt=function(e){R(e)};const Tt=function(e,t){if(t=t||e.transferSyntax,8===e.bitsAllocated&&"1.2.840.10008.1.2.4.50"===t&&(3===e.samplesPerPixel||4===e.samplesPerPixel))return!0},St={convertRGBColorByPixel:e,convertRGBColorByPlane:t,convertYBRFullByPixel:r,convertYBRFullByPlane:n,convertPALETTECOLOR:yt,wadouri:dt,wadors:Ie,configure:kt,convertColorSpace:X,createImage:ye,decodeImageFrame:he,decodeJPEGBaseline8BitColor:J,getImageFrame:pe,getPixelData:z,getMinMax:H,isColorImage:xe,isJPEGBaseline8BitColor:Tt,webWorkerManager:de,internal:U,external:pt}})(),o})()));
102119
102342
 
102120
102343
 
102121
102344
  /***/ }),
@@ -258042,7 +258265,7 @@ var selectOrdinal = function selectOrdinal() {
258042
258265
  /******/ // This function allow to reference async chunks
258043
258266
  /******/ __webpack_require__.u = (chunkId) => {
258044
258267
  /******/ // return url for filenames based on template
258045
- /******/ return "" + ({"54":"histogram-worker","525":"dicom-microscopy-viewer","572":"polySeg","584":"suv-peak-worker"}[chunkId] || chunkId) + ".bundle." + {"7":"94692aed50fe4ba2e2f5","41":"64e0da470e235cfac4bb","54":"829e14ec12c2b41a4323","94":"33ca3bc10aa42716dbbb","109":"b4fee2a22b622839baf5","121":"47f05840a5b3cdf75543","188":"f2b81ec70ae344f57183","203":"3581da3a32a0b720d3a7","206":"e1ea316389b21006d3df","236":"f774cdc955890e6cdac9","295":"c935ed0430aa026f7591","297":"194d8985ab974839b5b6","321":"39a76114e54cd9833c43","325":"5012b0285b6baadd1884","342":"36ee082163b01284eeba","445":"38c6d2af64e41cd7c614","448":"35b8f8e262fa954026df","473":"11f707c8170ade2eb56a","481":"a2b01ffe06a262fa9375","483":"581b242d7b90866fdfb9","487":"79aff4db7df5f383b423","525":"d3a56dc9f62df5e11019","530":"207b38c15c4c01e4db0e","544":"3542927ec15c3f688c8d","572":"4442dd3318266fddf4d0","574":"4b059c95cd34efdc9cb3","584":"348c016f7f973d05f2d2","594":"c292423defd9581bfbe3","633":"e258ba4843985e67336a","644":"1e77691d2eeb96a423b0","669":"64309c677c5ca188348c","699":"b9666b1d4ddf7e8577ee","722":"52eb61926d08a08793fe","724":"72aef9dfca69ae057d37","726":"c8de818cf1a3ff0cf7d2","783":"11d774eb13ffc74cdca5","835":"4c0eaa2c1a427ee41817","862":"9897a9b748078d53f9ab","889":"b6231f995fd098f7e3f9","905":"cd3e2b347340dd47a1b0","907":"723a425dedf8147243d2","931":"d270a1fda9a2836c3cc5","939":"9d93b2e47c52338747a2","961":"2c4663737c970764a41e"}[chunkId] + ".js";
258268
+ /******/ return "" + ({"54":"histogram-worker","525":"dicom-microscopy-viewer","572":"polySeg","584":"suv-peak-worker"}[chunkId] || chunkId) + ".bundle." + {"54":"829e14ec12c2b41a4323","94":"ae3ca435b134c95aea2e","109":"b4fee2a22b622839baf5","121":"27d181784f24551bc546","236":"79a374f5fdf7fde431f4","243":"7891b41d969264043783","295":"c935ed0430aa026f7591","297":"194d8985ab974839b5b6","325":"bfb7de5a397beae16d24","342":"17f0c50a27c0ba1f3846","370":"e4cd6c20d3496c949374","445":"38c6d2af64e41cd7c614","448":"375bbf6d00a23e35f229","481":"a2b01ffe06a262fa9375","483":"016de3c3ec209d9fa42a","487":"205821cf073b4d0d2e71","525":"d3a56dc9f62df5e11019","530":"17b9a34fefff133e5379","544":"170c67e76a6900a9a644","545":"c9cc3bd30adc9904cf64","550":"53604ec87839bd9b4a49","572":"36ddebc98d8b109edf33","574":"b369b11b04c3e080f0b3","584":"f4df597fab47d977d7f3","644":"1e77691d2eeb96a423b0","682":"fdd752d2920107f695fb","699":"fee3d1c6609ecc557a9a","721":"d01a6829ac9b0abef67d","722":"1242e0348afc63ca4f5e","726":"c8de818cf1a3ff0cf7d2","776":"bb8a64b917ff1e559734","783":"f4f09b94ebe4d1a466b1","835":"4c0eaa2c1a427ee41817","862":"59bb164ca7e871a33e44","889":"5b10c495e1442d648ffc","905":"1ba21a0406473fc92696","907":"b199f25916a94c4ebb97","914":"2b3a856b7d41ac8298e6","931":"d270a1fda9a2836c3cc5","939":"9d93b2e47c52338747a2","961":"d1b25d8f354bde3be17c","981":"808058a6555d322675e1","989":"b929ddc23c16980560de","998":"df083f740270855652bd"}[chunkId] + ".js";
258046
258269
  /******/ };
258047
258270
  /******/ })();
258048
258271
  /******/
@@ -258213,7 +258436,7 @@ var selectOrdinal = function selectOrdinal() {
258213
258436
  /******/ };
258214
258437
  /******/
258215
258438
  /******/ __webpack_require__.f.miniCss = (chunkId, promises) => {
258216
- /******/ var cssChunks = {"321":1,"325":1,"481":1,"544":1,"574":1,"633":1};
258439
+ /******/ var cssChunks = {"325":1,"481":1,"544":1,"550":1,"574":1,"998":1};
258217
258440
  /******/ if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);
258218
258441
  /******/ else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {
258219
258442
  /******/ promises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {
@@ -258337,20 +258560,17 @@ var selectOrdinal = function selectOrdinal() {
258337
258560
  /******/ /* webpack/runtime/chunk prefetch trigger */
258338
258561
  /******/ (() => {
258339
258562
  /******/ var chunkToChildrenMap = {
258340
- /******/ "188": [
258563
+ /******/ "243": [
258341
258564
  /******/ 121
258342
258565
  /******/ ],
258343
- /******/ "321": [
258344
- /******/ 574
258345
- /******/ ],
258346
258566
  /******/ "325": [
258347
258567
  /******/ 530,
258348
258568
  /******/ 862
258349
258569
  /******/ ],
258350
- /******/ "633": [
258351
- /******/ 295
258570
+ /******/ "550": [
258571
+ /******/ 574
258352
258572
  /******/ ],
258353
- /******/ "669": [
258573
+ /******/ "721": [
258354
258574
  /******/ 530
258355
258575
  /******/ ],
258356
258576
  /******/ "907": [
@@ -258358,6 +258578,9 @@ var selectOrdinal = function selectOrdinal() {
258358
258578
  /******/ ],
258359
258579
  /******/ "961": [
258360
258580
  /******/ 939
258581
+ /******/ ],
258582
+ /******/ "998": [
258583
+ /******/ 295
258361
258584
  /******/ ]
258362
258585
  /******/ };
258363
258586
  /******/ __webpack_require__.f.prefetch = (chunkId, promises) => (Promise.all(promises).then(() => {